版本: Unity 6 (6000.0)
语言英语
  • C#

Collider.ClosestPoint

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户提出的每一个更改建议,并在必要时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public Vector3 ClosestPoint(Vector3 position);

参数

position 您想要找到最近点的的位置。

返回值

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

描述

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

此方法计算碰撞体上与世界中 3D 位置最接近的点。在下面的示例中,closestPoint 是碰撞体上的点,location 是 3D 空间中的点。如果 location 位于碰撞体中,则 closestPoint 位于内部。如果碰撞体被禁用,则该方法将返回输入 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 相同,但不允许传递自定义位置和旋转。相反,它使用碰撞体的位置。