Page 1 of 1

NavMeshSurfaceのBuildHeightMeshを使用した場合Waypointを巡回しない

Posted: 2024/09/27 17:03
by taki
OS Windows10
Unityバージョン 2022.3.46f1
Arborバージョン3.10.3
再現方法 AgentMoveOnWaypointを使用して4か所のWaypointを巡回するように設定し、NavMeshSurfaceのBuildHeightMeshにチェックを入れてNavmeshをベイクした場合Waypointを巡回しなくなる。チェックを外してベイクすれば巡回する。

何かに引っかかったような動きで最初のWaypointへ向かおうとし続けるけどずっと進まないような挙動になるので、多分巡回するオブジェクトの高さがBuildHeightMeshにチェックを入れた事によって変わってしまうのが良くないのかなぁとか思っているのですがこれがバグなのかも不明です。どうすれば解決するでしょうか…

Re: NavMeshSurfaceのBuildHeightMeshを使用した場合Waypointを巡回しない

Posted: 2024/09/27 17:18
by taki
すみませんAgentMoveOnWaypointの停止距離を0から0.1に変更したら解決しました。お騒がせして申し訳ないです。

Re: NavMeshSurfaceのBuildHeightMeshを使用した場合Waypointを巡回しない

Posted: 2024/09/27 23:20
by caitsithware
解決したようで良かったです。

一応解説しておくと、Agent関連のStopping Distanceは移動先の位置と現在位置との間の距離がこの数値以下であれば移動先にたどり着いたと判定するプロパティになっています。
数値を0にした場合は、数ミリのズレも許容されずに判定することになるため移動先に到達したとなかなか判定できず、移動しようとするもののいつまでたっても完了しなくなります。
AgentMoveOnWaypointの仕様としては開始直後は最初のWaypointへ向かう仕様ですので、エージェントの出現場所が完全一致していないことで移動完了にならず次の地点に向かえなくなり、最初の位置から動かない状況になっていたと思われます。
この辺りの動作や数ミリのズレも許容せずにぴったり止まる方法などについてはNavMeshAgentの仕様によりますので、詳細はNavMeshAgent関連のUnityマニュアルなどを参照してください。

Re: NavMeshSurfaceのBuildHeightMeshを使用した場合Waypointを巡回しない

Posted: 2024/09/28 14:26
by taki
なるほど!詳しく丁寧なご解説ありがとうございます!助かります!