我知道如何检查更新循环中的碰撞 - 但是我需要在box2D中查看两个物体是否接触或重叠。我有指向这些对象的指针,我不希望在进行更新时检查。
如果这是一个愚蠢的问题,我仍然在学习Box2D。我已经尝试解决这个问题一个小时左右,但我没有运气。
看起来您可以使用b2TestOverlap
或b2CollideCircles
执行此操作(因为对象是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;
}
答案 0 :(得分:1)
不确定b2TestOverlap的细节,但我会尝试一下。你可以从身体获得必要的信息,假设它们只有一个形状:
body->GetTransform();
body->GetFixtureList()->GetShape();