Unity 6.3
0 онлайн 39 гостей 3 в системе
Вход

NavMesh.Raycast

Declaration

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

Параметры

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

Возвращаемое значение

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

Описание

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

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

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

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

Raycast отличается от физики лучевой прокат, потому что он работает на “2.5D”, на NavMesh. Разница с физическими лучами заключается в том, 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, используйте физику проецирования луча, чтобы найти точку в мире. Дополнительные сведения см. в примере Перемещение агента в положение, выбранное при нажатии мыши.

Declaration

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

Параметры

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

Возвращаемое значение

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

Описание

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

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