我想知道如何以正确的方式配置b2contactlistener
。我学到了很多教程,但他们并没有很好地帮助我。最后我一般都发现了碰撞。但不适用于特定的机构。所以请指导我如何检测特定身体的碰撞。我正在使用cocos2d-x 2.1.5
和box2d
。这是我用过的代码。
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";
}
};
答案 0 :(得分:1)
您应该查看b2body->setUserData()
。您可以存储任何想要确定哪个物体是哪个物体的物体,例如,如果您有许多同一类物体,比如球和针对象,那么您可以在球对象的用户数据中存储指向实际球的指针具有Tag = 1并且在针obj中的sprite具有tag = 2的sprite。然后在您的方法中执行检查if((body1->getUserData())->getTag() == 1) ...
并且您知道所有内容