Параметры
position | Место, к которому вы хотите найти ближайшую точку. |
Возвращает
Vector3 Точка на коллайдере, ближайшая к указанному местоположению.
Описание
Возвращает точку на коллайдере, ближайшую к заданному местоположению.
Этот метод вычисляет точку на коллайдере, ближайшую к трехмерному местоположению в мире. В приведенном ниже примере closestPoint
— это точка на коллайдере, а location
— это точка в трехмерном пространстве. Если location
находится в коллайдере, closestPoint
будет внутри.
Примечание. Отличие от ClosestPointOnBounds заключается в том, что возвращаемая точка фактически находится на коллайдере, а не на границах коллайдера. (границы — это рамка, окружающая коллайдер.)
using UnityEngine;
// Обратите внимание, что ближайшая точка основана на поверхности коллайдера
// и местоположение представляет собой точку в 3D-пространстве.
// Штучки работают в редакторе.
//
// Создадим исходный куб и зададим ему масштаб (1, 0,5, 3).
// Измените размер BoxCollider на (0,8, 1,2, 0,8). Это означает, что
// коллизии произойдут, когда GameObject приблизится к BoxCollider.
// Скрипт ShowClosestPoint.cs показывает сферы, отображающие местоположение
// и ближайшая точка. Попробуйте изменить размер и местоположение BoxCollider.
// значения.
// 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, но не позволяет передавать пользовательское положение и поворот. Вместо этого используется положение коллайдера.