2011-10-18 19 views
1

私はそうのように私のCCSceneにb2BodyDefを追加してい:Box2Dの衝突検出?

b2BodyDef platformBodyDef; 
    platformBodyDef.type = b2_dynamicBody; 
    platformBodyDef.position.Set(40, 495); 
    platformBodyDef.userData = platforms; 
    _body = _world->CreateBody(&platformBodyDef); 

私は接触リスナーを使用することになっています知っているが、私はBOX2Dに新しいですし、これは私がそれをコーディングでしょうので、どのように私には他の言語のようなものです私のCCScene内のCCSpritesの1つがこのb2BodyDefと衝突するかどうかを確認しますか?このb2BodyDefはアニメーション化されますが、私はそれについて今心配していません。 私はこれをどのようにすることができるか知っていますか?

ありがとうございます!

答えて

1

あなたは何をすべきか基本的にこのhere

を行う方法を説明し、非常に良いチュートリアルでは、物体間の衝突をリッスンcontactListenerを作成するがあります。スプライトにタグが付けられていることを確認してから、コンタクトリスナーで衝突した2つのオブジェクトのspriteDataを読み込みます。タグをチェックすることで、衝突したスプライトを特定することができます。

そこから、スプライト、ボディー、世界への参照があるので、何でもできます。例えば、前述の例のように、レンガを取り外す。

+0

私はこのスレッドを作ったので、私は正常にプロジェクトに追加しました。しかし、私が現在直面している問題は、1つの衝突に対して複数のコールバックを停止する方法です。これが可能かどうか知っていますか? –

+0

遅れてご返事申し訳ありません。うまくいけば、他の人に役立つはずです... contactListenerのprecalcメソッドでは、イベントを取り消すことができます。だからあなたは、そのメソッドで削除されるタグでボディにタグを付けてから、イベントをキャンセルします。その後、すべてのボディーを反復して位置を更新するなど...スプライトが削除されるタグが付いている場合は削除します。 – tustvold

+0

私は何をしているのですか、私はタグが衝突すると直ちにそれを変更し、衝突if文はその衝突のためにもう呼び出されません! –