Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

NavMesh.Raycast

Объявление

public static bool Raycast(Vector3 sourcePosition, Vector3 targetPosition, out AI.NavMeshHit hit, int areaMask);

Параметры

sourcePosition Происхождение луча.
targetPosition Конец луча.
hit Содержит свойства результирующего местоположения луча.
areaMask Маска битового поля, указывающая, какие области NavMesh могут передаваться при трассировке луча.

Возвращает

bool true, если луч завершается до достижения целевой позиции. В противном случае возвращает false.

Описание

Проведите линию между двумя точками на NavMesh.

Исходная и конечная точки сначала отображаются в NavMesh, затем от исходной точки к цели прослеживается луч. Если луч достигает границы NavMesh, функция возвращает значение true, и данные попадания заполняются. Если путь от источника к цели свободен, функция возвращает false.

Если raycast заканчивается на внешнем крае, hit.mask равен 0; в противном случае он содержит маску области блокирующего полигона.

Эту функцию можно использовать для проверки того, может ли агент беспрепятственно пройти между двумя точками в NavMesh. Например, если у вашего персонажа есть маневр уклонения, для которого требуется пространство, вы можете выстрелить лучом из местоположения персонажа в нескольких направлениях, чтобы найти место, до которого персонаж может увернуться.

NavMesh.Raycast отличается от физического raycast, поскольку он работает на «2.5D», на NavMesh. Отличие от физического raycast заключается в том, что версия NavMesh может обнаруживать все виды навигационных препятствий, таких как ямы в земле, а также может взбираться вверх по склону, если область доступна для навигации.

// TargetReachable using UnityEngine; using UnityEngine.AI; public class TargetReachable : MonoBehaviour { public Transform target; private NavMeshHit hit; private bool blocked = false; void Update() { blocked = NavMesh.Raycast(transform.position, target.position, out hit, NavMesh.AllAreas); Debug.DrawLine(transform.position, target.position, blocked ? Color.red : Color.green); if (blocked) Debug.DrawRay(hit.position, Vector3.up, Color.red); } }

Если вы хотите найти ближайшую точку в NavMesh, вам следует использовать физический raycast, чтобы найти точку в мире, см. Переместить в точку щелчка пример.


Объявление

public static bool Raycast(Vector3 sourcePosition, Vector3 targetPosition, out AI.NavMeshHit hit, AI.NavMeshQueryFilter filter);

Параметры

sourcePosition Происхождение луча.
targetPosition Конец луча.
hit Содержит свойства результирующего местоположения луча.
filter Фильтр, указывающий, какие области NavMesh могут передаваться при трассировке луча.

Возвращает

bool true, если луч завершается до достижения целевой позиции. В противном случае возвращает false.

Описание

Отслеживает линию между двумя позициями в NavMesh с учетом ограничений, заданных аргументом фильтра.

Линия обрывается на внешних краях или в непроходимой области.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3