using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Chase : MonoBehaviour {
public Transform player;//指定目標
static Animator anim;//動畫面板
public Transform head;//本體的視線(頭看過去的位子)
bool pursuing = false;
private NavMeshAgent nav;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
nav = GetComponent<NavMeshAgent> ();
}
// Update is called once per frame
void Update ()
{
Vector3 direction = player.position - this.transform.position;
direction.y = 0;//本體看目標的幅度
float angle = Vector3.Angle(direction, head.up);//【up->綠軸(Y),right->紅軸(X),forward->藍軸(Z)】
if (Vector3.Distance (player.position, this.transform.position) < 10 && (angle < 30 || pursuing)) //目標接近本體的範圍 , Vector3.Angle角度小於30時(angle < 30)
{
pursuing = true;
this.transform.rotation = Quaternion.Slerp (this.transform.rotation, Quaternion.LookRotation (direction), 0.1f); //跟著目標的方向
anim.SetBool("isIdle", false);
if (direction.magnitude > 5) //跟目標之間的距離
{
nav.SetDestination (player.transform.position);// nav 追隨指定目標
this.transform.Translate(0, 0, 0.05f);//跟著目標移動位子與速度(Y,X,Z)
anim.SetBool("isWalk", true);
anim.SetBool("isAttack", false);
}
else
{
anim.SetBool("isAttack", true);
anim.SetBool("isWalk", false);
}
}
else
{
anim.SetBool("isIdle", true);
anim.SetBool("isWalk", false);
anim.SetBool("isAttack", false);
pursuing = false;
nav.SetDestination (transform.position); //nav 歸零
}
}
}