我的游戏中的碰撞问题:对于某些实体,它与在联系侦听器中注册不一致。具体来说,我的子弹和导弹经常直接穿过其他实体/生物,操作词经常,就像有时他们那样,我无法确定这种不一致的原因。我已经将它们都设置为“子弹”以进行连续碰撞,并且它们的行进速度不会令人讨厌,所以我没有想法。
这是一个演示该问题的视频:
http://www.youtube.com/watch?v=FMLkg5r3dpo
这是我的联系人监听器:
public class Collisions implements ContactListener {
public Collisions() {
}
@Override
public void beginContact(Contact contact) {
Body a = contact.getFixtureA().getBody();
Body b = contact.getFixtureB().getBody();
if (a.getUserData() instanceof Bullet && b.getUserData() instanceof Enemy) {
Bullet bullet = (Bullet) a.getUserData();
Enemy enemy = (Enemy) b.getUserData();
enemy.harm(10);
bullet.kill();
}
if (a.getUserData() instanceof Missile && b.getUserData() instanceof Enemy) {
Missile missile = (Missile) a.getUserData();
Enemy enemy = (Enemy) b.getUserData();
enemy.harm(40);
missile.kill();
}
if (a.getUserData() instanceof Craft && b.getUserData() instanceof Enemy) {
Craft craft = (Craft) a.getUserData();
Enemy enemy = (Enemy) b.getUserData();
craft.harm(5);
enemy.harm(10);
}
}
@Override
public void endContact(Contact contact) {
}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
}