前の記事では、保存した経路を再設定したときに正常に経路にたどり着けるときと、その場に立ち止まってしまうときがありました。このときの経路のNavMeshPathStatusの値を調べてみました。
text.text = agent.path.status + "";
すると、上のGIF画像のように、経路に戻れるときは値がPathCompleteになって、立ち止まってしまうときはPathInvalidになりました。
また、Nav Mesh Obstacleコンポーネントを付けたCubeを置いて、経路へ戻れなくすると常にPathInvalidになります。
さらに、このCubeを経路が途切れるように置くとナビメッシュエージェントは経路が途切れたところで足踏みして目的地へたどり着けませんが、経路の状態はPathCompleteです。
NavMeshPathStatusの値がもう一つのPathPartialになるのはどういう時か試してみました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.AI;
public class PathStatusTest : MonoBehaviour
{
[SerializeField] Text text;
[SerializeField] Transform cube;
// Start is called before the first frame update
void Start()
{
NavMeshPath path = new NavMeshPath();
if (NavMesh.CalculatePath(transform.position, cube.position, NavMesh.AllAreas, path))
{
text.text = path.status + "";
}
else {
text.text = "失敗";
}
}
}
Start()でNavMesh.CalculatePathを使って、ナビメッシュエージェントから目的地のオレンジのCubeまでの経路を計算し、その経路の状態を表示します。
問題なければ「PathComplete」と表示されますが、例えば目的地がナビメッシュ上にないときはfalseが返されます。
目的地が孤立したナビメッシュ上にあるときは「PathPartial」と表示されました。