2013-10-13 42 views
2

我有同樣的BodyDef很多機構在Box2D中,當我打電話:如何在box2d中正確刪除身體?

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

它會破壞所有與BodyDef屍體。

我該如何解決這個問題?

回答

4

這裏沒有引用任何BodyDef

world.destroyBody(b); 

應該只摧毀身體b。只要確保您的if條件正常。您也可以逐步進行調試(或在if內部輸入日誌),以檢查被銷燬的物體數量是否與if條件爲true的時間相同。

+0

是的,它看起來像問題是在if循環。 我把它放在if循環中: System.out.println(b.getPosition()。y); 它總是打印出0.0,儘管所有的身體都有不同的位置。你也許知道這是爲什麼? – Mustafa

+0

我剛剛寫作:)問題解決了嗎?奇怪的是,如果身體位置都是0.0,if條件應該總是「假」,不是嗎? – ssantos

+0

提問後,我稍微改了一下:) – Mustafa