如何检查两个给定的b2Body对象是否正在触摸?

时间:2012-05-24 18:57:29

标签: objective-c cocos2d-iphone box2d

我知道如何检查更新循环中的碰撞 - 但是我需要在box2D中查看两个物体是否接触或重叠。我有指向这些对象的指针,我不希望在进行更新时检查。

如果这是一个愚蠢的问题,我仍然在学习Box2D。我已经尝试解决这个问题一个小时左右,但我没有运气。

看起来您可以使用b2TestOverlapb2CollideCircles执行此操作(因为对象是b2CircleShapes)。如果其中任何一个是正确的策略,你可以从给定的身体获得形状,我应该使用什么作为变换值?如果这些不是要走的路,如何检查两个给定的b2Body对象是否重叠或触摸

更新:这是我得到的代码,感谢LearnCocos2D:

    -(BOOL)isTouchingCentre:(b2Body*)bodyToTest{
    //body is a b2Body object
        bool overlap = b2TestOverlap(body->GetFixtureList()->GetShape(), bodyToTest->GetFixtureList()->GetShape(), body->GetTransform(), bodyToTest->GetTransform());
        return overlap;

    }

1 个答案:

答案 0 :(得分:1)

不确定b2TestOverlap的细节,但我会尝试一下。你可以从身体获得必要的信息,假设它们只有一个形状:

body->GetTransform();
body->GetFixtureList()->GetShape();