ゲームでの衝突の問題: 一部のエンティティでは、コンタクト リスナーに登録されていることと一致しません。具体的には、私の弾丸とミサイルはしばしば他のエンティティ/モブを通り抜けます.時々彼らがそうするように、私は実際にこの不一致の原因を確認することはできません. 連続衝突のために両方を「弾丸」に設定しましたが、それらは不快なほど速く移動しないため、アイデアがありません。
この問題を示すビデオは次のとおりです。
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) {
}
}