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); } }