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.

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 :slight_smile: 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));
}

}