Я пытаюсь обработать столкновение снаряда и врага. При попадании снаряда во врага он должен исчезнуть, а вместо этого игра разбивается в момент контакта. Я не знаю, как это исправить
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(), но это не помогает
В Box2d, насколько я понял, объекты имеют реакцию на столкновение по умолчанию, которая позволяет им остановить движение или отскочить назад (если вы установили восстановление).
Также вы можете скажем, объект является датчиком, и поэтому вы можете...
Я использую Android Studio с Java и LibGDX.
Мне нужно правильно нарисовать повернутые девять патчей в зависимости от их положения в мире Box2d.
Метод Spritebatch.draw не обрабатывает девять патчей, поэтому мне приходится использовать метод...
Я использую Android Studio с Java и LibGDX.
Мне нужно правильно нарисовать повернутые девять патчей в зависимости от их положения в мире Box2d.
Метод Spritebatch.draw не обрабатывает девять патчей, поэтому мне приходится использовать метод...
Я уже некоторое время балуюсь с LibGDX и хотел легко портировать свои программы на разные системы. У меня есть фоновая текстура, которую я хочу масштабировать до текущего разрешения. Изображение имеет разрешение 1920x1080, как мне изменить его на...
Я уже некоторое время балуюсь с LibGDX и хотел легко портировать свои программы на разные системы. У меня есть фоновая текстура, которую я хочу масштабировать до текущего разрешения. Изображение имеет разрешение 1920x1080, как мне изменить его на...