# ClosestPoint(Vector3)

> The closest point on the collider given a specified location.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.PhysicsModule

```csharp
public Vector3 ClosestPoint(Vector3 position)
```

### Parameters

**** (\[Vector3]\(/engine/6000.6/script-reference/unityengine/vector3)): Location you want to find the closest point to.

### Returns

| Type                                                              | Description                                                             |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [Vector3](/engine/6000.6/script-reference/unityengine/vector3.md) | The closest point on the collider, returned in world space coordinates. |

### Remarks

This method computes the point on the Collider that is closest to a 3D location in the world. In the example below `closestPoint` is the point on the Collider and `location` is the point in 3D space. If `location` is in the Collider the `closestPoint` is inside. If the Collider is disabled, the method returns the input `position`.

**Note:** The difference from [Collider.ClosestPointOnBounds](/engine/6000.6/script-reference/unityengine/collider/closestpointonbounds.md) is that the returned point is actually on the collider instead of on the bounds of the collider.  ([Collider.bounds](/engine/6000.6/script-reference/unityengine/collider/bounds.md) is a box that surrounds the collider.)

```csharp
using UnityEngine;

// Note that closestPoint is based on the surface of the collider
// and location represents a point in 3d space.
// The gizmos work in the editor.
// Note that closestPoint functions correctly regardless of whether the collider is set as a trigger.
//
// Create an origin-based cube and give it a scale of (1, 0.5, 3).
// Change the BoxCollider size to (0.8, 1.2, 0.8).  This means that
// collisions will happen when a GameObject gets close to the BoxCollider.
// The ShowClosestPoint.cs script shows spheres that display the location
// and closestPoint. Try changing the BoxCollider size and the location
// values.

// Attach this to a GameObject that has a Collider component attached
public class ShowClosestPoint : MonoBehaviour
{
    public Vector3 location;

    public void OnDrawGizmos()
    {
        var collider = GetComponent<Collider>();

        if (!collider)
        {
            return; // nothing to do without a collider
        }

        Vector3 closestPoint = collider.ClosestPoint(location);

        Gizmos.DrawSphere(location, 0.1f);
        Gizmos.DrawWireSphere(closestPoint, 0.1f);
    }
}
```

**Note:** Same as [Physics.ClosestPoint](/engine/6000.6/script-reference/unityengine/physics/closestpoint.md) but doesn't allow passing a custom position and rotation. Instead, it uses the position of the collider.
