Objective c 如何检查两个给定的物体是否接触?

Objective c 如何检查两个给定的物体是否接触?,objective-c,cocos2d-iphone,box2d,Objective C,Cocos2d Iphone,Box2d,我知道如何在更新循环中检查碰撞-但我需要查看两个实体在box2D中是否接触或重叠。我有指向这些对象的指针,我不想在更新过程中进行检查 我仍在学习Box2D,如果这是一个愚蠢的问题,我深表歉意。我已经试着解决这个问题一个小时左右了,但我没有任何运气 看起来您可以使用b2TestOverlap或者b2collized circles(因为对象是b2圆形)。如果这两种方法中的任何一种都是正确的,那么您可以从给定的实体获取形状,我应该使用什么作为变换值?如果不是这样,我如何检查两个给定的b2Body对象

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

我仍在学习Box2D,如果这是一个愚蠢的问题,我深表歉意。我已经试着解决这个问题一个小时左右了,但我没有任何运气

看起来您可以使用
b2TestOverlap
或者
b2collized circles
(因为对象是b2圆形)。如果这两种方法中的任何一种都是正确的,那么您可以从给定的实体获取形状,我应该使用什么作为变换值?如果不是这样,我如何检查两个给定的b2Body对象是否重叠或接触

更新:以下是我从LearnCos2D获得的代码:

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

    }

不确定b2TestOverlap的细节,但我会尝试一下。假设实体只有一个形状,则可以从实体中获取必要的信息:

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

您可以使用contact listener来检测他们何时触摸以及何时停止触摸,并使用这些事件来更新每个身体当前正在触摸的其他身体的列表。然后你可以在任何时候查看列表的内容,看看每个人都在触摸哪些身体。嘿,又来了。这是最简单的方法,还是b2TestOverlap有优点?它是最有效的。我不知道这是最简单的,但考虑到你在这里发布了一个问题,另一种方式可能也不那么简单:)我认为b2TestOverlap主要是一个内部函数。关于保持其他物体被触摸的列表,在本教程中有一个C++的例子,标题为“防止跳跃依赖于地面类型”。