public Vector3 ClosestPoint (Vector3 position);

Parameters

position您需要找到最接近点所对应的位置。

Returns

Vector3 碰撞体上最接近指定位置的点。

Description

返回碰撞体上最接近给定位置的一个点。

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.

注意:ClosestPointOnBounds 的区别是返回的点实际上位于碰撞体上,而不是在碰撞体的边界上。(bounds 是围绕碰撞体的框形。)

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); } }

注意:Physics.ClosestPoint 相同,但不允许传入自定义位置和旋转,而是使用碰撞体的位置。