3

AndEngineを使用して、box2d拡張機能を備えたゲームを作成しています。2つのボディが衝突したときに、それらを削除または再スポーンする必要があるという条件を実装したいと思います。最初は使ってみました

if(sprite1.collidesWith(sprite2))
// remove the sprites

しかし、スプライトはそれぞれのボディにアタッチされているため、これは役に立たないようです。また、contactListenerを次のように使用してみました。

bodyA=getFixtureA().getBody();
bodyB=getFixtureB().getBody();

そして後で

if(bodyA!=null && bodyB!=null)
// remove the bodies

しかし、それはゲームをクラッシュさせました。誰かがそれを行うためのより良い方法を知っていますか?

4

2 に答える 2

4

ですから、衝突についてはいくつかのことがありますが、衝突に基づいてオブジェクトを削除する方法を理解するのにかなりの時間がかかりました。そこで、他の人を助けるために簡単なチュートリアルを行うことにしました。重要なのは、Box2Dでは、衝突ハンドラーで本体を削除することはできず、次の更新で処理される削除のためにそれをマークするために何かをする必要があるということです。(より良い方法かもしれませんが、これは機能し、仕事を成し遂げます)

ここに非常に素晴らしいチュートリアルへのリンクがあります。

Box2Dの衝突と除去

これは確かにあなたがあなたの仕事を成し遂げるのを助けるでしょう。

ありがとう :)

于 2012-07-22T23:43:30.193 に答える
2

スプライトの衝突が実際に発生した場合は、同時にボディを削除することもできます。

mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(pSprite);
于 2012-07-23T09:48:32.027 に答える