我正在用Java开发一个小小的Android游戏,使用AndEngine用于图形,使用Box2D用于物理 - 特别是碰撞处理。我在类中有一些不同类型的带有构造函数的对象,如下所示:
MainActivity.java
Enemy.java
Npc.java
Door.java
我在主类中有一个静态的PhysicsWorld,我正在设置一个来自Enemy类的ContactListener,以定义当其中一个敌人遇到某些事情时会发生什么。但是,当我发现每个PhysicsWorld只有一个ContactListener时,我试图为Door类设置另一个ContactListener。
基本上,我的问题是:解决这个问题的最佳方法是什么?
我知道我可能解释得非常糟糕,所以我道歉。
答案 0 :(得分:3)
您可以使用单个ContactListener
来管理整个世界; Contact.getFixtureA/B()
将返回联系中涉及的灯具。您可以利用Fixture.getBody()
获取每个碰撞夹具的关联Body
;例如,如果您的Door
和Enemy
对象与Body
s作为用户数据相关联,那么您可以使用Body.getUserData()
来检索该对象。