ฉันรู้ว่าคำถามนี้เก่า แต่ฉันรู้สึกว่ามันขาดคำตอบที่ง่ายและใช้รหัส ดังนั้นนี่คือ:
/// <summary>
/// Return if a given position is inside the physical body.
/// </summary>
/// <param name="body">Body to test.</param>
/// <param name="position">Position to check if inside the body.</param>
/// <returns>If given point is inside the physical body.</returns>
public bool TestPointCollision(FarseerPhysics.Dynamics.Body body, Vector2 position)
{
// get body transformation
FarseerPhysics.Common.Transform trans;
body.GetTransform(out trans);
// iterate fixtures to see if any of them hit the point
foreach (var fix in body.FixtureList)
{
if (fix.Shape.TestPoint(ref trans, ref position))
return true;
}
// if there are no hits, return false
return false;
}
โปรดทราบว่านี่ไม่ใช่ Box2D ธรรมดา แต่เป็น Farseer (และใน C #) แต่ควรมี API เดียวกันแน่นอน