areaMask | パスをトレースする時に特定のマスクをかけるためにナビメッシュレイヤーを渡すことができる |
maxDistance | パス上のヒット情報を取得する距離 |
hit | 取得できた辺の位置のプロパティー |
bool ヒット情報を取得する距離までの間にヒットしなければ true、そうでない場合は false
現在の経路に沿って位置をサンプリングします
この関数は現在の経路に沿って、指定した距離だけサンプリングを行います。 その位置におけるメッシュの詳細が NavMeshHit オブジェクトとして返されます。これを使用して、例えば キャラクターが辿りつく前に、地表の種類を確かめることができます。例えば、エージェントが現在、深い水の中を移動していると、キャラクターのアニメーションは駆け足から、苦しい歩行に変わるかもしれません。
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... } } }