Не может уничтожить тело (Box2d) - PullRequest
4 голосов
/ 31 декабря 2011
- for (var bb1:b2Body= world.GetBodyList(); bb1; bb1 = bb1.GetNext())
  {
     if (bb1.GetUserData() is Sprite)
     {
         world.DestroyBody(bb1);
     }
  }
  world=null;

Правильно ли удалить тело b2 из box2d?

, но все же я вижу объекты на сцене.

Ответы [ 2 ]

8 голосов
/ 31 декабря 2011

Если вы пытаетесь сделать это внутри мировой функции Step () (например, в слушателе контактов), она не будет работать, потому что мир все еще обрабатывает тела. Вам нужно будет записать, какие тела вы хотите уничтожить, а затем уничтожить их после того, как завершится мировой этап времени.

Кроме того, я не уверен, какой язык вы используете, но кажется немного странным, что этот цикл уничтожит тело, а затем вызовет GetNext () для того, что вы только что уничтожили.

0 голосов
/ 17 июня 2013

Порт Box3D AS3 содержит ошибки, связанные с функцией DestroyBody. Исправление ошибки: здесь (на русском языке).

Проблема в пуле контактов. И вы должны удалить тела после того, как время вашего мира закончится.

...