unity3d Fast and Efficient Checks


Example

Avoid unnecessary operations and method calls wherever you can, especially in a method which is called many times a second, like Update.

Distance/Range Checks

Use sqrMagnitude instead of magnitude when comparing distances. This avoids unnecessary sqrt operations. Note that when using sqrMagnitude, the right hand side must also be squared.

if ((target.position - transform.position).sqrMagnitude < minDistance * minDistance))

Bounds Checks

Object intersections can be crudely checked by checking whether their Collider/Renderer bounds intersect. The Bounds structure also has a handy Intersects method which helps determine whether two bounds intersect.

Bounds also help us to calculate a close approximate of the actual (surface to surface) distance between objects (see Bounds.SqrDistance).

Caveats

Bounds checking works really well for convex objects, but bounds checks on concave objects may lead to much higher inaccuracies depending on the shape of the object.

Using Mesh.bounds is not recommended as it returns local space bounds. Use MeshRenderer.bounds instead.