2013-10-13 3 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 loop: System.out.println (b.getPosition(). Y); и всегда распечатывает 0.0, хотя все тела имеют разное положение. Возможно, вы знаете, почему это так? – Mustafa

+0

Я писал сейчас :) Проблема решена тогда? Как ни странно, если позиции тела равны 0.0, условие if должно быть всегда «ложным», не так ли? – ssantos

+0

Я немного поменял его, задав вопрос :) – Mustafa

Смежные вопросы