Version: 2022.1

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