快速高效的检查
尽可能避免不必要的操作和方法调用,尤其是在一秒钟内多次调用的方法,如 Update
。
距离/范围检查
比较距离时,请使用 sqrMagnitude
代替 magnitude
。这避免了不必要的 sqrt
操作。请注意,使用 sqrMagnitude
时,右侧也必须是方形的。
if ((target.position - transform.position).sqrMagnitude < minDistance * minDistance))
边界检查
可以通过检查它们的 Collider
/ Renderer
边界是否相交来粗略地检查对象交叉点。Bounds
结构还有一个方便的 Intersects
方法,它有助于确定两个边界是否相交。
Bounds
还帮助我们计算物体之间实际 (表面到表面)距离的近似值 (见 Bounds.SqrDistance
)。
注意事项
边界检查对于凸对象非常有效,但对凹面对象的边界检查可能会导致更高的不准确性,具体取决于对象的形状。
建议不要使用 Mesh.bounds
,因为它返回本地空间边界。请改用 MeshRenderer.bounds
。