【Unity3D】學習筆記(第1記) 敵人AI之Seek(靠近)
阿新 • • 發佈:2019-01-29
利用Switch()可以新增其他功能,如攻擊,逃跑等;using UnityEngine; using System.Collections; public class enemyController : MonoBehaviour { public float distanceToMe; //智慧體到目標的距離 public GameObject me; //目標角色 public float isSeekDistance = 10.0f; //可靠近範圍 public int state; //智慧體狀態 void Start() { me = GameObject.FindWithTag ("Player"); }
注意LookAt()方法,功能是注視,引數是目標,即智慧體會一直注視目標,跟著它旋轉void Update() { switch (state) { case 0: Idle(); //空閒,四處遊蕩 break; case 1: Seek(); //向目標靠近 break; } } //智慧體空閒函式 void Idle() { //獲取兩者間的距離 distanceToMe = Vector3.Distance( me.transform.position ,this.transform .position); if (distanceToMe > isSeekDistance) //大於可靠近範圍,進入空閒狀態 { state = 0; if(Random.value >0.5) //通過隨機值,使其隨機左右移動 { this.transform.Rotate(Vector3.up*5); } else { transform.Rotate(Vector3.up*-5.0f); } this.transform.Translate(Vector3.forward *0.1f); } else { state = 1; } }
//智慧體靠近函式 void Seek() { distanceToMe = Vector3.Distance( me.transform.position ,this.transform .position); if (distanceToMe < isSeekDistance) { this.transform.LookAt(me.transform ); //該方法使智慧體總是面對目標 this.transform.Translate (Vector3.forward * 0.1f); //向目標前進,即靠近(Vector3.back 後退,則逃避) } else { state = 0; } } }