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

bool someBool = someBounds.Contains(somePoint);

当 body 没有像图 1 那样旋转时,我得到了预期的结果。(红色区域是 somePoint 使 someBool 为真的地方)
并且当 body 旋转时,somePoint 使 someBool 在红色区域内的所有地方都为真(图 2)。我不想要这种行为。我希望点在绿色区域内返回 true(图 3)。

c# - BoxCollider2D bounds.Contain(somePoint) 不按预期工作-LMLPHP

最佳答案

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

bool overlaps = myBoxCollider2D.OverlapPoint (somePoint);
boundsBoxCollider2D 假设对象是 AABB -“轴对齐边界框”,这意味着它没有旋转并且像图 1 那样对齐。所以,你的图 1 和图 2 确实证明了这一点。

来源:如果您转到 BoxCollider2D 文档,单击 Bounds ,然后单击 Bounds 类,您将看到边界所指内容的详细信息。

关于c# - BoxCollider2D bounds.Contain(somePoint) 不按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35360679/

10-10 12:36