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

パラメーター

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

戻り値

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

説明

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

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

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

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

// ShowGoldenPath
using UnityEngine;
using UnityEngine.AI;

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

public static bool CalculatePath (Vector3 sourcePosition, Vector3 targetPosition, AI.NavMeshQueryFilter filter, AI.NavMeshPath path);

パラメーター

sourcePositionリクエストした初期位置
targetPositionリクエストした目的地
filterA filter specifying the cost of NavMesh areas that can be passed when calculating a path.
path計算結果のパス

戻り値

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

説明

Calculates a path between two positions mapped to the NavMesh, subject to the constraints and costs defined by the filter argument.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961