你好,我正在尝试为我的角色创建一个AI,但它不工作。我希望它一看到我的角色就开枪,但它只是在场景中游荡,没有开枪,甚至我的debug.log也不起作用。
public Transform[] Targets;private int DestPoint = 0;private NavMeshAgent Agent;public Transform Player;public Rigidbody Bullet;public Transform Instantiator;void Start(){ Agent = GetComponent<NavMeshAgent> (); Agent.autoBraking = false;}void Update(){ if (Vector3.Distance(transform.position, Player.position) < 30f) { Debug.Log ("Shoot"); transform.LookAt (Player); Shoot (); } else if (Vector3.Distance(transform.position, Player.position) > 30f) { GotoNextPoint (); }}void GotoNextPoint(){ Agent.destination = Targets [DestPoint].position; DestPoint = (DestPoint + 1) % Targets.Length;}void Shoot(){ Rigidbody Clone = Instantiate (Bullet, Instantiator.position, Instantiator.rotation) as Rigidbody; Clone.AddForce (Vector3.forward);}
回答:
距离永远不会小于30。在你的else语句中:
else if (Vector3.Distance(transform.position, Player.position) > 30f){ GotoNextPoint ();}
添加Debug.Log(Vector3.Distance(transform.position, Player.position));
,这样你就可以看到你得到的值:
else if (Vector3.Distance(transform.position, Player.position) > 30f){ Debug.Log(Vector3.Distance(transform.position, Player.position)); GotoNextPoint ();}