/// <summary> /// Returns the closest point on a collider. If you know the type of the collider, use the other ClosestPointOn functions instead, as they are a TINY bit faster /// </summary> /// <returns>The point on surface.</returns> /// <param name="sphere">Sphere.</param> /// <param name="collider">Collider.</param> public static Vector3 ClosestPointOnSurface(this SphereCollider sphere, Collider collider) { if (collider is BoxCollider) { return(sphere.ClosestPointOnBox((BoxCollider)collider)); } else if (collider is SphereCollider) { return(sphere.ClosestPointOnSphere((SphereCollider)collider)); } else if (collider is CapsuleCollider) { return(sphere.ClosestPointOnCapsule((CapsuleCollider)collider)); } else if (collider is TerrainCollider) { return(sphere.ClosestPointOnTerrain((TerrainCollider)collider)); } else if (collider is MeshCollider) { return(sphere.ClosestPointOnMesh((MeshCollider)collider)); } else { return(collider.transform.position); } }