В моей игре я реализую функциональность состояния сохранения / загрузки, которая восстанавливает часть мира, оставляя наземное тело нетронутым.
Поэтому, когда я нажимаю кнопку загрузки, я просто сохраняю координаты актеров, затем удаляю всех актеров со сцены и затем заново создаю сцену, используя сохраненные координаты.
Если у актера есть тело box2d,при удалении он вызывает world.destroyBody ().
В результате игрового процесса я могу получить несколько актеров, имеющих ссылку на одно и то же тело.
Поэтому, когда я перехожу список актеров и удаляю их одинодним из них, возможно, что для некоторых из них принадлежащее тело уже уничтожено (поскольку оно является общим).
Могу ли я использовать проверку body.isActive (), чтобы увидеть, было ли это тело уже уничтожено или нетзаконно, поскольку тело уничтожено и его никогда нельзя разыменовывать из java?
Похоже, body.isActive () выдает false после того, как тело было удалено, или это какой-то побочный эффект?Я спрашиваю о проблемах (например, знаменитый случайный сбой box2d с не очень полезными сообщениями), вызывающих какие-либо функции на уже уничтоженном теле?
Могу ли я использовать такой код:
//since after ball is attached to magnet, they share
// a body, and it might be that body is already dropped
if (body.isActive()) {
body = world.destroyBody(body);
}
body = null;
Чтобыло бы лучшим способом организовать массовое падение и воссоздать часть мира?