如何在box2d中正确移除物体?

4

我在 Box2D 中有很多具有相同 BodyDef 的物体,当我调用:

Array<Body> bodies = new Array<Body>();
world.getBodies(bodies);
for(Body b : bodies){
    if(b.getPosition().y < -20f) {
        world.destroyBody(b);
    }
}

这会使用BodyDef破坏所有物体。

我该怎么修复呢?

1个回答

7

这里没有引用任何BodyDef

world.destroyBody(b);

应该仅销毁主体b。确保您的if条件正确。您还可以逐步调试(或在if中放置日志),以检查销毁的主体数量是否与if条件为true的次数相同。


是的,看起来问题在if循环中。 我把这个放在if循环中:System.out.println(b.getPosition().y);但它总是打印出0.0,尽管所有的物体都有不同的位置。你知道为什么吗? - Mustafa
我刚刚在写代码 :) 问题解决了吗?奇怪的是,如果身体位置都是0.0,那么if条件应该始终为“false”,不是吗? - ssantos
我在提问后稍微修改了它 :) - Mustafa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接