【Unity】NavMeshAgentの座標移動でハマる

環境

Unity 2018.2.16f1

ハマりポイント

NavMeshAgentをアタッチしたGameObjectが指定した位置に移動しない。

Vector3 s_pos = new Vector3(0,0,0);

transform.position = s_pos;//ここで(0,0,0)へ移動しない

解決策

NavMeshAgentがアタッチされているとtransform.positionの値を直接変更した場合でも、現在の座標と変更先の座標を結ぶ直線の間にNavMeshで侵入付加エリアが設定されていると、進入不可エリアを超えて移動できないようだ。(つまり侵入付加エリア手前に移動してしまう)
下記のようにNavMeshAgentを一度無効化することで任意の座標に移動できる。


Vector3 s_pos = new Vector3(0,0,0);

var agent = GetComponent<NavMeshAgent>();
agent.enabled = false;
transform.position = s_pos;//ここで(0,0,0)へ移動できた
agent.enabled = true;

この記事が気に入ったらサポートをしてみませんか?