2011-09-17 13 views
0

b2bodyが別のレイヤの別のb2bodyと衝突したかどうかを確認できますか?また、どうすればいいのですか?ボディが衝突しているかどうかを判断する - Cocos2d/Box2D

E.G.

私はレベル1のレイヤーで爆弾を発射した私のゲームシーンのレイヤーにボールを持っています。彼らは衝突し、爆弾は消える。

私は

おかげで、より明確にする必要がある場合は私に知らせてください!

答えて

1

ボディを衝突させたい場合は、同じb2Worldに属している必要があります。どの層に描かれているのか、どのように物理学に関係しないのか。衝突がサブクラスb2ContactListenerを発生したときに決定し、コールバック関数を実装するには:

class MyContactListener : public b2ContactListener 
{ 
public: 
MyContactListener() : b2ContactListener() {} 

void BeginContact (b2Contact *contact); 
void EndContact (b2Contact *contact); 
void PreSolve (b2Contact *contact, const b2Manifold *oldManifold); 
void PostSolve (b2Contact *contact, const b2ContactImpulse *impulse); 

}; 

、あなたのb2Worldに、このクラスのオブジェクトを追加します。

MyContactListener *listener = new MyContactListener(); 
world->SetContactListener(listener); 
+0

私は衝突検出を設定しています。私は世界的にb2Worldを宣言すべきですか?ボールは自分のクラスであるゲームシーンレイヤーに描画され、爆弾はそれ自身のクラスであるレベル1レイヤーに描画されます。 – Jonathan

+0

@ジョン:私はあなたがメインのシーンや他のすべてのレイヤーを含むレイヤーを持っていると思います。 b2Worldポインタを保存して、作成したすべての子レイヤにポインタを渡すことができます – Andrew

+0

子レイヤを作成するにはどうすればよいですか? – Jonathan

関連する問題