NavMeshAgentをアタッチしたオブジェクトにシーンを跨がせようとしたとき、何かとエラーに遭遇したので自分用メモです。
やりたかったこと
NavMeshAgentをアタッチしたモンスターを別のシーンに移動させたかった。
発生したエラー
シーン移動後、
“SetDestination” can only be called on an active agent that has been places on NavMesh
というエラーが発生。でもなぜか目的地はちゃんとセットされていて、きちんと移動してる。
原因
移動前のシーンのベイクされたナビメッシュの情報が残っていることが原因。
解決策
以下のように、NavMeshAgentのパスが正常な時だけ目的地を設定するようにしました。
1 2 3 4 |
if (m_NavMeshAgent.pathStatus != NavMeshPathStatus.PathInvalid) { // NavMeshAgentの目的地を設定する } |
根本的な解決策ではありませんが、if文を1つ追加するだけで対処できるので便利でした。
今回は開発中のゲームが完成間近だったので楽な方を選択しました。
「NavMeshPathStatus.PathInvalid」はNavMeshAgentが移動するためのパスが不正であることを示します。
コメント