Когда я уничтожаю объект, состоящий из нескольких тел, соединенных суставами, мое приложение падает без ошибок. Конечно, я сделал некоторые исследования и обнаружил, что это происходит, когда один разрушает тела, в то время как физический движок вычисляет шаг. Поэтому я просто добавляю тела в список и уничтожаю их в onUpdate(), но это не помогло. Самое забавное, что разрушение простых тел работает как шарм даже вне onUpdate() и никогда не приводило к крушению.Сбой при разрушении тел
Там не было никакого вывода ошибок, только один раз мне удалось поймать один говорил, что проблема является NullPointerException в World.java на линии 507. Удивительно, но там я нашел следующее:
public boolean isLocked()
{
return jniIsLocked(addr);
}
Может кто-то сказать мне, что может быть? Я даже зашел так далеко, чтобы уничтожить тела по одному:
if (!destroyList.isEmpty()){
Body b = destroyList.get(0);
destroyList.remove(0);
mPhysicsWorld.destroyBody(b);
}
Проблема сохраняется.
Примечания: Объект, который я уничтожаю, состоит из нескольких тел, соединенных WeldJoints с одним центральным телом. Тела перекрываются, поэтому я использую отрицательный groupIndex, чтобы они не сталкивались друг с другом. Удаление всех суставов, связанных с определенным телом, перед удалением не помогает. Выхода ошибки:
05-31 15:32:02.486: W/dalvikvm(927): JNI WARNING: JNI method called with exception raised
05-31 15:32:02.497: W/dalvikvm(927): in Lcom/badlogic/gdx/physics/box2d/World;.jniStep (JFII)V (CallBooleanMethodV)
05-31 15:32:02.497: W/dalvikvm(927): Pending exception is:
05-31 15:32:02.506: I/dalvikvm(927): Ljava/lang/NullPointerException;:
05-31 15:32:02.526: I/dalvikvm(927): at com.badlogic.gdx.physics.box2d.World.contactFilter(World.java:507)
05-31 15:32:02.526: I/dalvikvm(927): at com.badlogic.gdx.physics.box2d.World.jniStep(Native Method)
05-31 15:32:02.536: I/dalvikvm(927): at com.badlogic.gdx.physics.box2d.World.step(World.java:298)
...
У вас по-прежнему возникает проблема, если вы уничтожаете только суставы? Вы также можете проверить World.java:507 тоже :) – iforce2d
В третий раз, да, я пробовал уничтожать суставы. Я также посмотрел World.java:507. Оба написаны в вопросе :-) – JohnEye
Вопрос гласит: «Удаление всех суставов, связанных с определенным телом перед удалением, не помогает». Я спрашивал, пытались ли вы уничтожить ТОЛЬКО суставы (и покинули тела). – iforce2d