- Home /
 
NavMeshAgent Teleporting when SetDestination called
I am having an issue with my NavMeshAgent teleporting when a new "SetDestination function is called". I am attempting to have my agent walk to a random point within the nav mesh. I am observing the agent teleporting to it's destination instead of translating there at the set speed.
I am using Unity 5.0 beta 18 release but I haven't seen any reported bugs or answers about that being the issue.
Here is the script I am using to set a new random destination
 using UnityEngine;
 using System.Collections;
 
 public class PetPathing : MonoBehaviour {
 
     private NavMeshAgent agent;
     private Transform targetPoint;
     private Transform destination;
 
     private float timer;
 
     // Use this for initialization
     void Start () {
         agent = gameObject.GetComponent<NavMeshAgent>();
         destination = gameObject.transform;
         targetPoint = setNewDestination();
         agent.SetDestination(targetPoint.position);
         timer = 0f;
         Debug.Log(string.Format("New destination has been set at {0}", targetPoint.position));
     }
     
     // Update is called once per frame
     void Update () {
         timer += Time.deltaTime;
         Pathing();
         Debug.Log(agent.updatePosition);
     }
 
 
     private void Pathing()
     {
         if (timer > 5.0f)
         {
             targetPoint = setNewDestination();
             agent.destination = targetPoint.position;
             timer = 0f;
             Debug.Log(string.Format("New destination has been set at {0}", targetPoint.position));
         }
     }
 
     private Transform setNewDestination()
     {
         destination.position = new Vector3(Random.Range(-6f, 6f), 0, Random.Range(-6f, 6f));
 
         return destination;
     }
 }
 
               I have tried re-baking the navmesh as well as setting the agent's speed and acceleration to very low values.
Any help with this would be extremely appreciated.
Answer by ashleyjlive · Feb 16, 2015 at 11:01 AM
After some time, I managed to narrow the issue down to the fact that destination is a Transform, not a Vector3. I edited your code to make it do what I believe you want it to do :) If this doesn't work, please let me know.
Be sure to revert your NavMeshAgent speeds and stuff in the editor.
using UnityEngine; using System.Collections;
public class PetPathing: MonoBehaviour {
 NavMeshAgent agent;
 Vector3 targetPoint;
 void Awake ()
 {
     agent = GetComponent<NavMeshAgent>();
     setNewDestination();
     agent.SetDestination(targetPoint);
     StartCoroutine(Pathing());
 }
 IEnumerator Pathing ()
 {
     agent.SetDestination(targetPoint);
     setNewDestination();
     yield return new WaitForSeconds(5f);
     StartCoroutine(Pathing());
 }
 void setNewDestination ()
 {
     targetPoint = new Vector3(Random.Range(-6f, 6f), 0, Random.Range(-6f, 6f));
 }
 
               }
Your answer