Cocos2D-x和Box2d中特定物体之间的碰撞检测

时间:2014-07-09 11:37:49

标签: xcode5 box2d cocos2d-x collision-detection

我想知道如何以正确的方式配置b2contactlistener。我学到了很多教程,但他们并没有很好地帮助我。最后我一般都发现了碰撞。但不适用于特定的机构。所以请指导我如何检测特定身体的碰撞。我正在使用cocos2d-x 2.1.5box2d。这是我用过的代码。

class MyListener : public b2ContactListener
{
   void BeginContact(b2Contact* contact)
{

    b2Fixture* fixtureA = contact->GetFixtureA();
    b2Fixture* fixtureB = contact->GetFixtureB();
    b2Body* body1 = fixtureA->GetBody();
    b2Body* body2 = fixtureB->GetBody();
    cout << "started";


   }
void MyListener::EndContact(b2Contact* contact)
{
    cout << "ended\n";
}


};

1 个答案:

答案 0 :(得分:1)

您应该查看b2body->setUserData()。您可以存储任何想要确定哪个物体是哪个物体的物体,例如,如果您有许多同一类物体,比如球和针对象,那么您可以在球对象的用户数据中存储指向实际球的指针具有Tag = 1并且在针obj中的sprite具有tag = 2的sprite。然后在您的方法中执行检查if((body1->getUserData())->getTag() == 1) ...并且您知道所有内容