電車を作りました。長方形、車軸、車輪の組み合わせ(ジョイント)です。他の物体(星や果物)との衝突矩形を検出したい。
どんなアイデアや提案も私を大いに助けるはずです。
その長方形のボディと他のボディ(スターまたはフルーツ)のユーザーデータを設定できます。b2contactlistner(cocos2d-x) も拡張する必要があります。方法が少ない
void BeginContact(b2Contact* contact) { /* handle begin event */ }
void EndContact(b2Contact* contact) { /* handle end event */ }
void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) { /* handle pre-solve event */ }
void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)
これらのメソッドの 1 つで、ボディのユーザーデータを取得し、トレインするボディのユーザーデータが他のボディのユーザーデータと衝突するかどうかを確認します。
例えば
void HelloWorld::BeginContact(b2Contact* contact)
{
b2Body * bodyA = contact->GetFixtureA()->GetBody();
b2Body * bodyB = contact->GetFixtureB()->GetBody();
// CCSprite sp1 = (CCSprite*)bodyA->GetUserData();
// CCSprite sp2 = (CCSprite*)bodyB->GetUserData();
// b2Body *b1 = (new Layerhero())->b1;
CCLog("In the begincontact");
if((bodyA == hero && bodyB == hero2))
{
CCLog("In the begincontact1");
boo = true;
}
else if ((bodyA == hero && bodyB == hero3))
{
CCLog("In the begincontact2");
boo = true;
}
}