我正在使用box2D鼠标关节拖动对象,但我陷入了一个奇怪的问题,即机构没有响应移动的功能,因为
if (currentFixture->TestPoint(worldPoint)) {
对于某些特定的身体总是返回false。
从上面的图像“黄色”身体可以拖动,但从身体的中心或底部的某个位置,但不从顶部。
注意:使用“PhysicEditor”创建实体,因此实体是“b2PolygonShape”。
编辑: 没有纹理的身体......我认为问题是顶点线相互交叉。
Edit2:在这里也使用R.U.B.E相同的结果。
答案 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;
}