0

電車を作りました。長方形、車軸、車輪の組み合わせ(ジョイント)です。他の物体(星や果物)との衝突矩形を検出したい。

どんなアイデアや提案も私を大いに助けるはずです。

4

2 に答える 2

0

その長方形のボディと他のボディ(スターまたはフルーツ)のユーザーデータを設定できます。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;
}

}

于 2013-11-13T06:34:36.470 に答える