void DoWander() { var min = minWanderDistance.value; var max = maxWanderDistance.value; min = Mathf.Clamp(min, 0.01f, max); max = Mathf.Clamp(max, min, max); var wanderPos = agent.transform.position; while ((wanderPos - agent.transform.position).sqrMagnitude < min) { wanderPos = (Random.insideUnitSphere * max) + agent.transform.position; } NavMeshHit hit; if (NavMesh.SamplePosition(wanderPos, out hit, float.PositiveInfinity, NavMesh.AllAreas)) { agent.SetDestination(hit.position); } }