Version: 2023.2

Collider.ClosestPoint

切换到手册
public Vector3 ClosestPoint (Vector3 position);

参数

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

返回

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

描述

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

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.

**注意:**与 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 相同,但不允许传入自定义位置和旋转,而是使用碰撞体的位置。