public Vector3 ClosestPoint (Vector3 position);

Parameters

positionLocation you want to find the closest point to.

Returns

Vector3 The point on the collider that is closest to the specified ___location.

Description

Returns a point on the collider that is closest to a given ___location.

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 will be inside.

Note: The difference from ClosestPointOnBounds is that the returned point is actually on the collider instead of on the bounds of the collider. (bounds is a box that surrounds the collider.)

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. // // 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 but doesn't allow passing a custom position and rotation. Instead, it uses the position of the collider.