Box2d多边形和圆形形状冲突FixtureA-> GetBody()和FixtureB-> GetBody()

时间:2014-11-19 16:02:02

标签: cocos2d-x box2d

我使用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
        }

    }

}

0 个答案:

没有答案