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. For example the character animation could switch from running to wading if the agent is currently moving through deep water.
#pragma strict public var target: Transform; public var mesh: NavMesh; 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 System.Collections;
public class ExampleClass : MonoBehaviour { public Transform target; public NavMesh mesh; 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... } } }