function SamplePathPosition (passableMask : int, maxDistance : float, out hit : NavMeshHit) : boolean


passableMask A mask specifying which NavMesh layers can be passed when tracing the path.
maxDistance Terminate scanning the path at this distance.
hit Holds the properties of the resulting location.


boolean - True If terminated before reaching position at maxDistance. Otherwise returns false.


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.

    var target: Transform;
var mesh: NavMesh;
private var agent: NavMeshAgent;
private var waterLayer: int;
function Start () {
agent = GetComponent.<NavMeshAgent>();
waterLayer = mesh.GetNavMeshLayerFromName("Water");
function Update() {
var hit: NavMeshHit;

// Check all layers one unit ahead.
if (!agent.SamplePathPosition(-1, 1.0, hit)) {
if (hit.mask & waterLayer) {
// Water detected along the path...

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
public Transform target;
public NavMesh mesh;
private NavMeshAgent agent;
private int waterLayer;
void Start() {
agent = GetComponent<NavMeshAgent>();
waterLayer = mesh.GetNavMeshLayerFromName("Water");
void Update() {
NavMeshHit hit;
if (!agent.SamplePathPosition(-1, 1.0F, out hit))
if (hit.mask & waterLayer) {


import UnityEngine
import System.Collections

class example(MonoBehaviour):

public target as Transform

public mesh as NavMesh

private agent as NavMeshAgent

private waterLayer as int

def Start():
agent = GetComponent[of NavMeshAgent]()
waterLayer = mesh.GetNavMeshLayerFromName('Water')

def Update():
hit as NavMeshHit
if not agent.SamplePathPosition(-1, 1.0F, hit):
if hit.mask & waterLayer: