Я пытаюсь обработать столкновение снаряда и врага. При попадании снаряда во врага он должен исчезнуть, а вместо этого игра разбивается в момент контакта. Я не знаю, как это исправить
public class CollisionProcessing implements ContactListener {
World world;
public CollisionProcessing(World world) {
super();
this.world = world;
}
@Override
public void beginContact(Contact contact) {}
@Override
public void endContact(Contact contact) {}
@Override
public void preSolve(Contact contact, Manifold manifold) {}
@Override
public void postSolve(Contact contact, ContactImpulse contactImpulse) {
Fixture A = contact.getFixtureA();
Fixture B = contact.getFixtureB();
if (A == null || B == null) return;
if (A.getUserData() == null || B.getUserData() == null) return;
if (A.getUserData().equals(3)) {
System.out.println("Bullet Body collision");
A.getBody().setActive(false);
world.destroyBody(A.getBody());
}
if (B.getUserData().equals(3)) {
System.out.println("Body Bullet collision");
B.getBody().setActive(false); // this
world.destroyBody(B.getBody()); // and this commands cruch game when contact happens
}
}
Я пробовал world.destroyBody() и body.destroyFicture(), но это не помогает
Я пытаюсь обработать столкновение снаряда и врага. При попадании снаряда во врага он должен исчезнуть, а вместо этого игра разбивается в момент контакта. Я не знаю, как это исправить [code]public class CollisionProcessing implements ContactListener { World world;
public CollisionProcessing(World world) { super(); this.world = world; } @Override public void beginContact(Contact contact) {}
@Override public void endContact(Contact contact) {}
@Override public void preSolve(Contact contact, Manifold manifold) {}
@Override public void postSolve(Contact contact, ContactImpulse contactImpulse) { Fixture A = contact.getFixtureA(); Fixture B = contact.getFixtureB(); if (A == null || B == null) return; if (A.getUserData() == null || B.getUserData() == null) return;
if (A.getUserData().equals(3)) { System.out.println("Bullet Body collision"); A.getBody().setActive(false); world.destroyBody(A.getBody()); } if (B.getUserData().equals(3)) { System.out.println("Body Bullet collision"); B.getBody().setActive(false); // this world.destroyBody(B.getBody()); // and this commands cruch game when contact happens } } [/code] Я пробовал world.destroyBody() и body.destroyFicture(), но это не помогает