Cocos2d iphone 拖动时出现Box2D鼠标关节问题。TestPoint函数返回false

Cocos2d iphone 拖动时出现Box2D鼠标关节问题。TestPoint函数返回false,cocos2d-iphone,box2d,box2d-iphone,Cocos2d Iphone,Box2d,Box2d Iphone,我使用box2D鼠标关节来拖动对象,但我遇到了一个奇怪的问题,身体对移动的函数没有响应,因为 if (currentFixture->TestPoint(worldPoint)) { 对于某些特定实体,始终返回false 从上图看,“黄色”车身是可拖动的,但可以从车身中心或底部等位置拖动,但不能从顶部拖动 注意:实体是使用“PhysicalEditor”创建的,因此实体是“b2PolygonShape” 编辑: 没有纹理的身体。。。我认为问题在于顶点线彼此相交 编辑2:在这里

我使用box2D鼠标关节来拖动对象,但我遇到了一个奇怪的问题,身体对移动的函数没有响应,因为

    if (currentFixture->TestPoint(worldPoint)) {
对于某些特定实体,始终返回false

从上图看,“黄色”车身是可拖动的,但可以从车身中心或底部等位置拖动,但不能从顶部拖动

注意:实体是使用“PhysicalEditor”创建的,因此实体是“b2PolygonShape”

编辑: 没有纹理的身体。。。我认为问题在于顶点线彼此相交

编辑2:在这里使用R.U.B.E同样的结果


当车身有多个固定装置时,您需要检查每个固定装置:

bool touchingBody( b2Body* b, b2Vec2 worldPoint ) 
{
    bool bodyIsTouched = false;
    for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) {
        if ( bodyIsTouched = f->TestPoint(worldPoint) )
            break;
    }
    return bodyIsTouched;
}

尝试查看调试绘图显示,而不是纹理,以准确查看物理世界中发生的情况。我不使用“物理编辑器”,但您的身体肯定是由多个装置组成的。可能其中一个不是CCW,或者是自相交的,这意味着物理编辑器中有一个bug?您可以使用physics editor输出的所有装置并单独测试。@iforce2d请检查编辑新图像是否已附加。@L'angeCarasuelo我使用的是单个装置。但可能是因为顶点相互相交。检查编辑图像。确保所有装置都是使用逆时针顶点顺序创建的。谢谢,这就是问题所在:p