BoxCollider2D bounds.Contain(somePoint) 未按预期工作

BoxCollider2D bounds.Contain(somePoint) works not as expected

BoxCollider2D 有点问题。当我这样做时:

bool someBool = someBounds.Contains(somePoint);

当 body 没有旋转时,我得到了预期的结果,如图 1 所示。(红色区域是 somePoint 使 someBool 为真的地方) 当 body 旋转时,somePoint 在红色区域内的任何地方都使 someBool 为真(图 2)。我不想要这种行为。我想指向绿色区域内的 return true(图 3)。

要实现您的目标,请像这样使用 BoxCollider2D.OverlapPoint

bool overlaps = myBoxCollider2D.OverlapPoint (somePoint);

BoxCollider2Dbounds 假设对象是 AABB - "axis-aligned bounding box",这意味着它没有像图 1 那样旋转和对齐。所以,真的是你的图片1和2证明了这一点。

来源:如果您转到 BoxCollider2D documentation, click on Bounds, then click on the Bounds class,您将看到边界所指内容的详细信息。