Расчет кратчайшего расстояния между двумя игровыми объектами - PullRequest
0 голосов
/ 05 мая 2020

У меня два GameObject. Один ОЧЕНЬ большой, один ОЧЕНЬ маленький. Представьте взлетно-посадочную полосу и небольшой самолет на ней. Я пытаюсь определить расстояние между этими двумя объектами с помощью Vector3:

var distance=Vector3.Distance(runway.transform.position, plane.transform.position);

Теперь, когда самолет находится посередине взлетно-посадочной полосы, я получаю очень маленькое значение расстояния (например, 0,5). Но в конце взлетно-посадочной полосы получаю довольно высокие оценки. ИМХО, это потому, что я сравниваю центр обоих GameObjects, а не ближайшее расстояние.

Есть ли способ получить самое близкое расстояние между этими двумя?

(«взлетно-посадочная полоса» не под прямым углом, поэтому я могу не просто сравнить ось Y для этого)

1 Ответ

1 голос
/ 05 мая 2020

Если «взлетно-посадочная полоса» имеет прикрепленный к ней коллайдер, вы можете использовать что-то вроде ClosestPointOnBounds (Vector3 position), которое возвращает точку на границах коллайдера, ближайшую к «position». Так может сработать что-то вроде этого:

Collider col = GetComponent<Collider>();
Vector3 closestPoint = col.ClosestPointOnBounds(planePosition);

Подробнее об этом можно прочитать здесь: https://docs.unity3d.com/ScriptReference/Collider.ClosestPointOnBounds.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...