1

andangineとtmxおよびbody2d拡張機能を使用してゲームを開発しています。マップの作成中に、特定の位置にコインのようなオブジェクト(スプライト)を作成します。コンタクトリスナーを使用して、プレーヤーがコインと衝突するかどうかを確認します。

このスプライトを削除するにはどうすればよいですか?スプライトを最適に整理するにはどうすればよいですか?ありがとう=)

4

2 に答える 2

1

PhysicsConnectorスプライトとボディを接続するためにを作成すると仮定します。これらの物理コネクタのリストを作成し、ボディ(およびそのスプライト)を削除する必要があると判断したら、次の手順を実行します。

Body bodyToRemove = //Get it from your contact listener
for(PhysicsConnector connector : mPhysicsConnectors) //mPhysicsConnectors is the list of your coins physics connectors.
    if(connector.getBody() == bodyToRemove)
        removeSpriteAndBody(connector); //This method should also delete the physics connector itself from the connectors list.

スプライトの編成について:コインは再利用可能なスプライトであるため、毎回再作成する必要はありません。オブジェクトプールを使用できますこのトピックに関する質問があります。

于 2012-11-25T21:57:15.627 に答える
0

ボディのユーザーデータを設定することをお勧めします。そして、コリジョンハンドラーでは、それを操作できます。小さな例:

body.setUserData(...);

..

    public void postSolve(Contact contact, ContactImpulse impulse) {

            ... bodyAType = (...) bodyA.getUserData();
            ... bodyBType = (...) bodyB.getUserData();
            if (bodyAType != null && bodyBType != null) {
               if (bodyAType.getUserData.equals(...)) {
                   //.......do what you need
               }
            }
    }
于 2012-11-26T14:00:31.383 に答える