areaMask | A bitfield mask specifying which NavMesh areas can be passed when tracing the path. |
maxDistance | Terminate scanning the path at this distance. |
hit | Holds the properties of the resulting location. |
bool True if terminated before reaching the position at maxDistance, false otherwise.
Sample a position along the current path.
This function looks ahead a specified distance along the current path. Details of the mesh at that position are then returned in a NavMeshHit object. This could be used, for example, to check the type of surface that lies ahead before the character gets there - a character could raise his gun above his head if he is about to wade through water, say.
#pragma strict public var target: Transform; private var agent: NavMeshAgent; private var waterMask: int; function Start() { agent = GetComponent.<NavMeshAgent>(); waterMask = 1 << NavMesh.GetAreaFromName("Water"); agent.SetDestination(target.position); } function Update() { var hit: NavMeshHit; // Check all areas one length unit ahead. if (!agent.SamplePathPosition(NavMesh.AllAreas, 1.0F, hit))if ((hit.mask & waterMask) != 0) { // Water detected along the path... } }
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... } } }