NavMeshAgent.SamplePathPosition
Declaration
public bool SamplePathPosition(int areaMask, float maxDistance, out AI.NavMeshHit hit);Параметры
| Параметр | Описание |
|---|---|
| areaMask | Маска битполя, указывающая, какие области NavMesh могут быть переданы при отслеживании пути. |
| maxDistance | Прекратить сканирование пути на этом расстоянии. |
| хит | Содержит свойства полученного расположения. |
Возвращаемое значение
логическое True, если завершено до достижения позиции maxDistance, false в противном случае.
Описание
Выберите позицию вдоль текущего пути.
Эта функция ищет впереди указанного maxDistance вдоль текущего пути, до третьего corner. Она возвращает детали сетки в этой позиции в объекте NavMeshHit. Вы можете использовать это для проверки типа поверхности, которая лежит впереди персонажа, прежде чем персонаж туда попадет. Например, персонажи могут поднять оружие над головой, если они собираются бродить по воде.
Если выборка пути заканчивается на внешнем краю, hit.mask равняется 0. Если выборка пути заканчивается в области, не указанной areaMask, hit.mask содержит маску области блокирующего многоугольника. Если выборка достигает конца пути или предела в третьем углу пути, hit.mask содержит маску области в этой позиции на NavMesh.
using UnityEngine; using UnityEngine.AI; using System.Collections;
public class ExampleClass : MonoBehaviour { public Transform target; private NavMeshAgent agent; private int waterMask;
void Start() { agent = GetComponent<NavMeshAgent>(); waterMask = 1 << NavMesh.GetAreaFromName("Water"); agent.SetDestination(target.position); }
void Update() { NavMeshHit hit;
// Check all areas one length unit ahead. if (!agent.SamplePathPosition(NavMesh.AllAreas, 1.0F, out hit)) if ((hit.mask & waterMask) != 0) { // Water detected along the path... } } }