【问题标题】:BoxCollider2D bounds.Contain(somePoint) works not as expectedBoxCollider2D bounds.Contain(somePoint) 不像预期的那样工作
【发布时间】:2016-02-12 10:49:53
【问题描述】:

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

bool someBool = someBounds.Contains(somePoint);

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

【问题讨论】:

  • 有没有办法让红框和绿框一起旋转?
  • 红框不存在,只是显示bounds包含somePoint的区域。
  • Unity BocXollider2D 有一个变换属性。所以你需要对碰撞器应用与对象相同的变换。这是我首先要尝试的。不是 100% 确定。
  • 你如何旋转这个身体?您需要确保您也在旋转 BoxCollider2D,而不是展开它。
  • BoxCollider2D 组件属于您正在旋转的那个物体的同一个 GameObject

标签: c# unity3d unity5 unity3d-2dtools


【解决方案1】:

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

bool overlaps = myBoxCollider2D.OverlapPoint (somePoint);

BoxCollider2Dbounds 假设对象是 AABB -“轴对齐边界框”,这意味着它没有旋转并且像图 1 中那样对齐。所以,真的你的图片 1 和 2 证明这个。

来源:如果你去BoxCollider2D文档,点击Bounds,然后点击Bounds类,你会看到bounds所指的细节。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 1970-01-01
    • 2012-06-13
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多