private Vector3 point;
private int state;
public NavMeshAgent nav;
void Start()
{
}
void Update()
{
if(Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit))
{
if(!hit.collider.name.Equals("Terrian"))
{
return;
}
point = hit.point;
nav.SetDestination(point);
SetState(1);
}
if(state == 0)
{
}
else if(state == 1)
{
if(!nav.pathPending)
{
if(nav.remainingDistance <= nav.stoppingDistance)
{
if(!nav.hasPath || nav.velocity.sqrMagnitude == 0f)
{
SetState(0);
}
}
}
}
}
}
void SetState(int value)
{
state = value;
if(state == 0)
{
animation.CrossFade("Idle_01");
}
else if(state == 1)
{
transform.LookAt(new Vector3(point.x, transform.position.y, point.z);
animation.CrossFade("Run");
}
}
坑:
1. 如何判断NanMeshAgent的停止。