Box2D / AndEngine - 用于多个对象类的ContactListener

时间:2012-08-06 21:10:20

标签: java android box2d andengine

我正在用Java开发一个小小的Android游戏,使用AndEngine用于图形,使用Box2D用于物理 - 特别是碰撞处理。我在类中有一些不同类型的带有构造函数的对象,如下所示:

MainActivity.java
Enemy.java
Npc.java
Door.java

我在主类中有一个静态的PhysicsWorld,我正在设置一个来自Enemy类的ContactListener,以定义当其中一个敌人遇到某些事情时会发生什么。但是,当我发现每个PhysicsWorld只有一个ContactListener时,我试图为Door类设置另一个ContactListener。

基本上,我的问题是:解决这个问题的最佳方法是什么?

我知道我可能解释得非常糟糕,所以我道歉。

1 个答案:

答案 0 :(得分:3)

您可以使用单个ContactListener来管理整个世界; Contact.getFixtureA/B()将返回联系中涉及的灯具。您可以利用Fixture.getBody()获取每个碰撞夹具的关联Body;例如,如果您的DoorEnemy对象与Body s作为用户数据相关联,那么您可以使用Body.getUserData()来检索该对象。