Box2D鼠标拖动时的联合问题。 TestPoint函数返回false

时间:2013-04-18 13:22:02

标签: cocos2d-iphone box2d box2d-iphone

我正在使用box2D鼠标关节拖动对象,但我陷入了一个奇怪的问题,即机构没有响应移动的功能,因为

    if (currentFixture->TestPoint(worldPoint)) {

对于某些特定的身体总是返回false。

enter image description here

从上面的图像“黄色”身体可以拖动,但从身体的中心或底部的某个位置,但不从顶部。

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

编辑: 没有纹理的身体......我认为问题是顶点线相互交叉。

enter image description here

Edit2:在这里也使用R.U.B.E相同的结果。

enter image description here

1 个答案:

答案 0 :(得分:1)

当身体有多个灯具时,您需要检查每个灯具:

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;
}