Legacy Documentation: Version 5.2
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

NavMeshAgent.SamplePathPosition

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual
public function SamplePathPosition(areaMask: int, maxDistance: float, out hit: NavMeshHit): bool;
public bool SamplePathPosition(int areaMask, float maxDistance, out NavMeshHit hit);

Parameters

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.

Returns

bool True if terminated before reaching the position at maxDistance, false otherwise.

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.

#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... } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961