passableMask | パスをトレースする時に特定のマスクをかけるためにナビメッシュレイヤーを渡すことが出来る |
maxDistance | パス上のヒット情報を取得する距離 |
hit | 取得できた辺の位置のプロパティ |
bool ヒット情報を取得する距離までの間にヒットしなければ true、そうでない場合は false
現在の経路に沿って位置をサンプリングします
この関数は現在の経路に沿って、指定した距離だけサンプリングを行います。 その位置におけるメッシュの詳細が NavMeshHit オブジェクトとして返されます。 これを使用して、例えば キャラクターが辿りつく先の地形の種類を、実際に到達する前に確かめることが出来ます。 場面としてはキャラクターがこれから水に入るときに頭上に銃を構えることが出来ます。
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 ExampleClass : 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 public class ExampleClass(MonoBehaviour): public target as Transform public mesh as NavMesh private agent as NavMeshAgent private waterLayer as int def Start() as void: agent = GetComponent[of NavMeshAgent]() waterLayer = mesh.GetNavMeshLayerFromName('Water') agent.SetDestination(target.position) def Update() as void: hit as NavMeshHit if not agent.SamplePathPosition(-1, 1.0F, ): if hit.mask & waterLayer: pass