NavMeshAgent.SamplePathPosition

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

Parameters

NameDescription
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.

Returns

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

Description

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.

JavaScript
    var target: Transform;
var mesh: NavMesh;
private var agent: NavMeshAgent;
private var waterLayer: int;
function Start () {
agent = GetComponent.<NavMeshAgent>();
waterLayer = mesh.GetNavMeshLayerFromName("Water");
agent.SetDestination(target.position);
}
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");
agent.SetDestination(target.position);
}
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')
agent.SetDestination(target.position)

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