I’m using the following script to make the NPC wander around the nav mesh.
using UnityEngine;
using System.Collections;
public class Wander : MonoBehaviour {
public float wanderRadius;
public float wanderTimer;
private Transform target;
private UnityEngine.AI.NavMeshAgent agent;
private float timer;
// Use this for initialization
void OnEnable () {
agent = GetComponent<UnityEngine.AI.NavMeshAgent> ();
timer = wanderTimer;
}
// Update is called once per frame
void Update () {
timer += Time.deltaTime;
if (timer >= wanderTimer) {
Vector3 newPos = RandomNavSphere(transform.position, wanderRadius, -1);
agent.SetDestination(newPos);
timer = 0;
}
}
public static Vector3 RandomNavSphere(Vector3 origin, float dist, int layermask) {
Vector3 randDirection = Random.insideUnitSphere * dist;
randDirection += origin;
UnityEngine.AI.NavMeshHit navHit;
UnityEngine.AI.NavMesh.SamplePosition (randDirection, out navHit, dist, layermask);
return navHit.position;
}
}
Can anyone tell me why they might be stopping at the edge of the nav mesh? I’m relatively new to navmeshes and I’m not sure if I’m using something wrong or what