0

私は Java で小さな Android ゲームを開発しています。グラフィックには AndEngine を使用し、物理演算には Box2D を使用しています。具体的には衝突処理です。次のように、クラスにコンストラクターを持ついくつかの異なるタイプのオブジェクトがあります。

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

メイン クラスに静的な PhysicsWorld があり、敵の 1 つが何かに当たったときに何が起こるかを定義するために、Enemy クラスから ContactListener を設定していました。しかし、各 PhysicsWorld に ContactListener が 1 つしかないことがわかったので、Door クラス用に別の ContactListener を設定しようとしました。

本質的に、私の質問はこれです: これを回避する最善の方法は何ですか?

私はおそらくこれをかなり悪く説明したことを知っているので、お詫び申し上げます。

4

1 に答える 1

3

シングルContactListenerを使用して全世界を管理できます。Contact.getFixtureA/B()連絡に関係する備品を返します。各コリジョンフィクスチャFixture.getBody()に関連付けられたものを取得するために利用できます。Bodyたとえば、DoorおよびオブジェクトがユーザーデータとしてsEnemyに関連付けられている場合は、を使用してそれを取得できます。BodyBody.getUserData()

于 2012-08-06T22:30:35.197 に答える