0

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

    if (currentFixture->TestPoint(worldPoint)) {

对于某些特定的机构,总是返回 false。

在此处输入图像描述

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

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

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

在此处输入图像描述

Edit2:在这里也使用 RUBE 相同的结果。

在此处输入图像描述

4

1 回答 1

1

当 body 有多个夹具时,您需要检查每个夹具:

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;
}
于 2013-04-23T18:13:11.090 回答