質問: 床となるゲームオブジェクトのサイズは 2000m x 2000m ほどの大きいものです。 この上をNavMeshでエージェントを動かしたいと思います。 現在は、 ``` GameObject target; NavMeshAgent NavMeshAgent; void Update() { NavMeshAgent.SetDestination(target.transform.position); } ``` これでエージェントをターゲットに向かわせて移動させていますが、 エージェントとの距離が大きくなると(数百メートルくらい)、動かなくなります。 ### やってみたこと Update()で行っているため処理が追い付いていないのかと考え、 **IEnumerator**の**yeild return new WaitForSeconds()**で処理を遅くさせたのですが動きません。 なので処理が追い付いていないということはないと思います。 ###### また、 **Instantiate()**でエージェントを生成しているのですが、 生成位置を目的地に近い位置に置き、それを手動(インスペクター)で遠い位置に移動させても目的地に向かってしっかり移動します。 ### 質問 NavMeshの距離制限などの変数があれば教えていただきたいです。 なぜ距離が離れてしまうと動かなくなってしまうのでしょうか?
回答: NavMeshの距離制限などの変数はざっくり見た感じ無いと思います。 そして`NavMeshAgent.pathStatus`の値を見るに、パスは正常に取得出来ているようですね。謎です。 Unity - Scripting API: NavMeshAgent 上記を見ながら他の怪しそうなプロパティやメソッドの検証をしてみて、 (`NavMeshAgent.SetDestination`の返り値と`NavMeshAgent.pathPending`辺りも怪しそうです) それでも分からなければバグかもしれない(本当は正常でないのにpathStatusが正常値を返している等も含めて)です。 とりあえずバグレポートを送れば少なくとも仕様かどうかは分かるのではないかと思いますので、試してみてください。 Unity QA - Bug Reporting - Unity 対処療法になりますが直近の解決方法としては、一度でも近付けばいいとのことなので、 「エージェントを透明な状態で目的地付近に生成→`SetDestination`実行、`pathPending`がtrueになるまで待つ→エージェントを本来の開始地点に配置→エージェントの透明を解除(目に見える状態にする)」 辺りでどうでしょうか。