Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

NavMesh.CalculatePath

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public static function CalculatePath(sourcePosition: Vector3, targetPosition: Vector3, areaMask: int, path: NavMeshPath): bool;
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);		
	}
}