Playerが近づくまで敵には動いてほしくない
NavMeshAgentを使用して敵がPlayerの位置に近づいてくるようになっているのだが、このままだと敵にすぐ囲まれてしまう。
ある程度Playerが近づいてから敵が反応するように動きを変更したい。
敵キャラとPlayerの距離
Playerの周りに透明なオブジェクトを囲むように配置して敵が触れたら動くようにしようかと考えたがめんどくさそう。
結局、敵キャラとPlayerの距離を算出して一定値より距離が短くなったら敵キャラが動くように設定しました。
float moveDistance = 13.0f;
bool moveFlg = false;
Transform player;
UnityEngine.AI.NavMeshAgent nav;
void Awake ()
{
player = GameObject.FindGameObjectWithTag ("Player").transform;
nav = GetComponent <UnityEngine.AI.NavMeshAgent> ();
}
void Update (){
if (!moveFlg){
float dist = Vector3.Distance (player.transform.position, this.transform.position);
if (dist < moveDistance) {
moveFlg = true;
}
} else {
nav.SetDestination (player.position);
}
}
Vector3のDistanceメソッドを使用しています。
第一引数にplayerのposition、第二引数に敵キャラのpositionを与えると二点間の距離がfloat型で戻ってきます。
便利なメソッドが用意されていて助かりました。