問題が発生した理由はわかっていますが、問題を回避する正しい方法ではありません。
私の Nav Mesh エージェントは、円内のランダムなポイントを選択し、ランダムな時間、そこに向かって歩きます。位置が有効な場合、このように正常に見えます。
しかし、エージェントは、歩くことができない場所を選び、歩くために割り当てられた時間だけそこにとどまり、別の場所を選んで再び移動することがよくあります。
移動していない理由は、パスが有効でないためであることを知っています(または、少なくともそれが理由だと思います。)
しかし、私はこのようなものを実装しようとしましたが、うまくいきませんでした。
private void moveTowardsWaypoint()
{
agent.ResetPath();
Vector3 newPosition = new Vector3(randomDirection.x, 0, randomDirection.y) + transform.position;
NavMeshPath path = new NavMeshPath();
Debug.Log(agent.CalculatePath(newPosition, path));
if(agent.CalculatePath(newPosition, path) == false)
{
agent.ResetPath();
StopCoroutine(walkTime());
pickWayPoint();
}
else
{
agent.SetDestination(newPosition);
}
}