我使用Box2d跟踪Cocos2d上的Raywenderlich教程来检测碰撞
我的问题是......
首先我在我的两个Box2d体上使用多边形形状。
碰撞时该方法工作正常。但是,当我将其中一个实体更改为Box2d圆形时,该方法无法正常工作。
FixtureA-> GetBody(); 返回 FixtureB-> GetBody();
FixtureB-> GetBody(); 返回 FixtureA-> GetBody();
我想说的是......
当我在其中一个主体上使用圆形而不是多边形时,它会反过来返回(关于2个多边形形状)
有人可以解释夹具A和夹具B是如何确定的。谢谢! :)
这是我的碰撞方法。我是从GMTDev和Raywenderlich那里得到的。
std::vector<ContactData>::iterator pos;
for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos)
{
ContactData contact = *pos;
b2Body *bodyA = contact.fixtureA->GetBody();
b2Body *bodyB = contact.fixtureB->GetBody();
if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL)
{
Sprite *spriteA = (Sprite *) bodyA->GetUserData();
Sprite *spriteB = (Sprite *) bodyB->GetUserData();
int iTagA = spriteA->getTag();
int iTagB = spriteB->getTag();
if ((iTagA == 1 && iTagB == 2) ){
//something is hit
}
}
}