我有一个传感器,它将力施加到在其边界内移动的物体上。我想确定身体是否接触到传感器的中心。
我可以很容易地检测物体是否在内部/接触传感器或其他物体,但我不确定如何检查物体是否位于给定传感器的中心。
编辑:传感器实际上是我在this question中询问过的一个漩涡。当物体接触(或实际上在或在传感器上)时,它会向其自身的中点施加力。当物体到达中点时,我希望它们做某事,但我不确定如何检查给定的物体是否接触/在传感器的边界内并触及其中点。
在下面的(非常精心绘制的)图中,蓝色圆圈是传感器,绿色圆圈是身体,小蓝点是中点。
更新:最后我将传感器放在中间并检查 - 这是最简单的方法。
答案 0 :(得分:0)
我认为这会奏效。
我在Objective-C方面不擅长,所以我将用C ++编写一个代码示例:
bool checkForTouchingCenter(b2Body *sensorBody, b2Body *bodyToTest)
{
b2Vec2 sensorPosition = sensorBody->GetPosition();
b2Vec2 localPosition = bodyToTest->GetLocalPoint(sensorPosition);
// An AABB check would be nice here, unless you test only the bodies that
// are already touching the sensor.
for (b2Fixture *fixture = bodyToTest->GetFixtureList(); fixture != 0; fixture = fixture->GetNext())
{
if (fixture->TestPoint(localPosition))
{
return true;
}
}
return false;
}
提示:仅测试已接触传感器的物体。