0
Так что в основном я получаю сообщение об ошибке при попытке уничтожить тела, которые не находятся в границах экрана. Кроме того, мои одного тела типа начинает действовать странно, когда другие органы типа разрушаются (пример пуля начинает двигаться в обратном направлении) вот примеры кода:Libgdx уничтожает несколько тел
Maingame класс петли:
Array<Body> bodies = new Array<Body>(world.getBodyCount());
world.getBodies(bodies);
for (Body body : bodies) {
check = 0;
if (BodyUtils.bodyIsEnemy(body)){
update(body);
check = 1;
}
if (BodyUtils.bodyIsBullet(body) && check == 0){
update1(body);
check = 0;
}
}
private void update(Body body) {
if (!BodyUtils.bodyInBounds(body)) {
if (BodyUtils.bodyIsEnemy(body) && !player.isHit()) {
createEnemy();
}
world.destroyBody(body);
}
}
private void update1(Body body) {
if (!BodyUtils.bulletInBounds(body))
world.destroyBody(body);
}
Другого класс:
public static boolean bodyInBounds(Body body) {
UserData userData = (UserData) body.getUserData();
switch (userData.getUserDataType()) {
case ENEMY:
return body.getPosition().x + userData.getWidth()/2 > 0;
}
return true;
}
public static boolean bulletInBounds(Body body) {
UserData userData = (UserData) body.getUserData();
switch (userData.getUserDataType()) {
case BULLET:
return body.getPosition().x + userData.getWidth() < 20;
}
return true;
}
Вы делаете это, пока работает 'world.step'? Это означает, например, в обратном вызове? – noone
Да, мировой шаг работает в том же методе, где я делаю для цикла – Rimwis
, он находится в том же методе или работает параллельно? – noone