【Unity】シーンを超えてNavMeshAgentを使う方法

NavMeshAgentをアタッチしたオブジェクトにシーンを跨がせようとしたとき、何かとエラーに遭遇したので自分用メモです。

 

やりたかったこと

NavMeshAgentをアタッチしたモンスターを別のシーンに移動させたかった。

 

発生したエラー

シーン移動後、

“SetDestination” can only be called on an active agent that has been places on NavMesh

というエラーが発生。でもなぜか目的地はちゃんとセットされていて、きちんと移動してる。

原因

移動前のシーンのベイクされたナビメッシュの情報が残っていることが原因。

 

解決策

以下のように、NavMeshAgentのパスが正常な時だけ目的地を設定するようにしました。

根本的な解決策ではありませんが、if文を1つ追加するだけで対処できるので便利でした。

今回は開発中のゲームが完成間近だったので楽な方を選択しました。

「NavMeshPathStatus.PathInvalid」はNavMeshAgentが移動するためのパスが不正であることを示します。

 

コメント