Version: 5.4
public static bool CalculatePath (Vector3 sourcePosition, Vector3 targetPosition, int areaMask, NavMeshPath path);

パラメーター

sourcePosition リクエストした初期位置
targetPosition リクエストした目的地
areaMask パスの計算時に特定のマスクをかけるためにナビメッシュレイヤーを渡すことができる
path 計算結果のパス

戻り値

bool 完全な、あるいは部分的にパスが見つかった場合、True 。それ以外の場合は False 。

説明

2 点間の位置を計算して、ナビメッシュオブジェクト上で移動できる範囲のパスを作成します

この関数はパスが必要なときにゲームでの遅延を避けるために前もってパスを計画するために使用することができます。別の使い方はエージェントを移動する前にターゲットの位置が到達可能かをチェックすることです。

非同期の呼び出しの NavMeshAgent.SetDestination とは対照的にこの関数はすぐにパスを計算します。これは非常に長いパスではコストがかかる操作になり、フレームレート不安定になります。たとえば、点々をカバーするための距離を評価してフレームごとにいくつかのパスのみを検索することをお勧めします。

返されるパスは NavMeshAgent.SetPath を使用してエージェントのパスを設定するのに使用できます。パスが機能するよう設定するためにエージェントは開始する点を閉じる必要があります。

// ShowGoldenPath.cs
using UnityEngine;
using System.Collections;
public class ShowGoldenPath : MonoBehaviour {
	public Transform target;
	private NavMeshPath path;
	private float elapsed = 0.0f; 
	void Start () {
		path = new NavMeshPath();
		elapsed = 0.0f;
	}
	void Update () {
		// Update the way to the goal every second.
		elapsed += Time.deltaTime;
		if (elapsed > 1.0f) {
			elapsed -= 1.0f;
			NavMesh.CalculatePath(transform.position, target.position, NavMesh.AllAreas, path);
		}
		for (int i = 0; i < path.corners.Length-1; i++)
			Debug.DrawLine(path.corners[i], path.corners[i+1], Color.red);		
	}
}