Unity重叠球体检测没有碰撞器
Unity overlap sphere detecting no collidiers
我对两个立方体之间的重叠有疑问。我有一个关卡,其中填充了许多 1x1x1 的 3D 立方体,它们的位置在变化。我想测试对于给定位置,两个立方体是否重叠。为此,我在该位置(重叠立方体的中心)调用了半径为 .25 的 Phsyics.OverlapSphereNonAlloc 到 return 碰撞器列表。如果 return 编辑了一个以上的碰撞体,则其中两个碰撞体重叠。就是这个主意。相反,调用 return 没有碰撞器。这是我正在做的事情的二维横截面图:
我认为没有找到对撞机,因为整个重叠球体位于立方体对撞机的内部。但是统一文档说 Phsyics.OverlapSphere...
Returns an array with all colliders touching or inside the sphere.
我本来以为,虽然 Physics.OverlapSphere 位于立方体对撞机内部,但立方体对撞机在技术上仍处于重叠球体内。任何人都可以向我解释一下或提供一种解决方法来找到给定点的所有对撞机数组吗?
问题源于 Unity 对文档的措辞方式。在你的情况下,球体在对撞机内部,其中重叠球体 returns 对撞机在球体内部。
我不确定我们在这里操作的是哪种规模,但一种方法是使用 Vector3.Distance 将所有块与您的位置进行比较。如果您有数千个块,您可以考虑合并这两种方法,其中您有一个大的重叠球,然后获取结果并使用距离公式缩小范围。
希望这对您有所帮助! :)
我对两个立方体之间的重叠有疑问。我有一个关卡,其中填充了许多 1x1x1 的 3D 立方体,它们的位置在变化。我想测试对于给定位置,两个立方体是否重叠。为此,我在该位置(重叠立方体的中心)调用了半径为 .25 的 Phsyics.OverlapSphereNonAlloc 到 return 碰撞器列表。如果 return 编辑了一个以上的碰撞体,则其中两个碰撞体重叠。就是这个主意。相反,调用 return 没有碰撞器。这是我正在做的事情的二维横截面图:
我认为没有找到对撞机,因为整个重叠球体位于立方体对撞机的内部。但是统一文档说 Phsyics.OverlapSphere...
Returns an array with all colliders touching or inside the sphere.
我本来以为,虽然 Physics.OverlapSphere 位于立方体对撞机内部,但立方体对撞机在技术上仍处于重叠球体内。任何人都可以向我解释一下或提供一种解决方法来找到给定点的所有对撞机数组吗?
问题源于 Unity 对文档的措辞方式。在你的情况下,球体在对撞机内部,其中重叠球体 returns 对撞机在球体内部。
我不确定我们在这里操作的是哪种规模,但一种方法是使用 Vector3.Distance 将所有块与您的位置进行比较。如果您有数千个块,您可以考虑合并这两种方法,其中您有一个大的重叠球,然后获取结果并使用距离公式缩小范围。
希望这对您有所帮助! :)