【发布时间】:2014-10-28 17:40:04
【问题描述】:
我已经实现并添加了PhysicsCollisionListener 以在弹丸击中玩家时进行注册。但是当弹丸击中玩家时。触发多个事件。
我在我的 simpleInitApp() 方法中使用bulletAppState.getPhysicsSpace().addCollisionListener(collisionListener) 添加我的侦听器。我在碰撞后移除弹丸。
我需要做什么才能为每个射弹只获得一个事件?
这是我的代码:
public void collision(PhysicsCollisionEvent event) {
//nodeA is a projectile
if(event.getNodeA().getName().startsWith("Projectile")) {
//projectile hits player
if(event.getNodeB().getName().startsWith("Player")) {
onHit(event.getNodeA(), event.getNodeB().getParent().getUserData("player");
}
//projectile hits projectile
else if(event.getNodeB().getName().startsWith("Projectile")) {
return;
}
//in any case, remove projectile
projectileNode.detachChild(event.getNodeA());
bulletAppState.getPhysicsSpace().remove(event.getNodeA());
}
//nodeB is a projectile
if(event.getNodeB().getName().startsWith("Projectile")) {
//projectile hits player
if(event.getNodeA().getName().startsWith("Player")) {
onHit(event.getNodeB(), event.getNodeA().getParent().getUserData("player");
}
//in any case, remove projectile
projectileNode.detachChild(event.getNodeB());
bulletAppState.getPhysicsSpace().remove(event.getNodeB());
}
}
【问题讨论】:
标签: java jmonkeyengine