Agent setDestination problems in an Animator Behaviour
Hi guys.
I'm creating an App that uses an State of an Animator where I create multiple points (waypoints) that set a route for an Agent. The first time I get into the state, everything works perfect. But then, when I change that state and return to the original, the agent doesn't move at all.
The Code I present you corresponde to the Behaviour of that State.
At the beginning I thought that maybe the waypoints was empty, but it's not. Then I checked that destination was set and I did. Finally I confirmed to unstopped the agent if it was stopped.
Nothing was worked. I really appreciate any suggestions. Don't know what else to do. Here is my code:
 public class Patrol : NPCBaseFSM {
 
     GameObject[] waypoints;
     int currentWP;
 
     private GameObject tempWayPoint;
 
     bool destinationPatrolSetted = false;
 
     void Awake()
     {
         waypoints = GameObject.FindGameObjectsWithTag ("wp");
         ShuffleWPs ();
     }
 
     // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
     override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) 
     {
         base.OnStateEnter (animator, stateInfo, layerIndex);
         destinationPatrolSetted = false;
         currentWP = 0;
     }
 
     // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
     override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) 
     {
         if (waypoints.Length == 0)
             return;
 
         if (Vector3.Distance(
             waypoints[currentWP].transform.position,
             NPC.transform.position) < accuracy)
         {
             currentWP++;
             destinationPatrolSetted = false;
             if (currentWP >= waypoints.Length)
             {
                 currentWP = 0;
             }
         }
 
         if (!destinationPatrolSetted)
         {
             agent.SetDestination (waypoints [currentWP].transform.position);
             destinationPatrolSetted = true;
         }
 
         // If the agent is not moving, enable it to do it
         if (agent.isStopped) {
             agent.isStopped = false;
         }
 
         // Rotate towards target
         var direction = waypoints[currentWP].transform.position - NPC.transform.position;
         NPC.transform.rotation = Quaternion.Slerp (
             NPC.transform.rotation,
             Quaternion.LookRotation(direction),
             rotSpeed * Time.deltaTime);
     }
 
     // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
     override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) 
     {
         destinationPatrolSetted = false;
     }
 
     private void ShuffleWPs()
     {
         for (int i = 0; i < waypoints.Length; i++)
         {
             int rnd = Random.Range (0, waypoints.Length);
             tempWayPoint = waypoints [rnd];
             waypoints [rnd] = waypoints [i];
             waypoints [i] = tempWayPoint;
         }
     }
Your answer
 
 
             Follow this Question
Related Questions
How to prevent stationary ai agents from being pushed by moving agents? 1 Answer
NavMeshAgent nextPosition is not updating 1 Answer
How do i fix the blocks Clipping through eachoter? 0 Answers
Agent rotates when destination is set, causing it to get stuck and not move. 0 Answers
Problem with Navmesh on "Sidewalk" 0 Answers
