/* Given a collider and a position reltative to the colliders transform, return the point on the * surface of the collider closest to the position */ public static Vector3 closestPointOnSurface(this Collider collider, Vector3 localPosition, float extrude = 0.0f) { SphereCollider sphereCollider = collider as SphereCollider; if (sphereCollider != null) { return(sphereCollider.closestPointOnSurface(localPosition, extrude)); } BoxCollider boxCollider = collider as BoxCollider; if (boxCollider != null) { return(boxCollider.closestPointOnSurface(localPosition, extrude)); } CapsuleCollider capsuleCollider = collider as CapsuleCollider; if (capsuleCollider != null) { return(capsuleCollider.closestPointOnSurface(localPosition, extrude)); } Debug.LogWarning("ColliderUtil does not work for Mesh Colliders!"); return(Vector3.zero); }