public ControlledWaypointsDog NextWaypoint(ControlledWaypointsDog previousWaypoint) { if (connections.Count == 0) { Debug.LogError("Insufficient waypoint count."); return(null); } else if (connections.Count == 1 && connections.Contains(previousWaypoint)) { return(previousWaypoint); } else { ControlledWaypointsDog nextWaypoint; int nextIndex = 0; do { nextIndex = UnityEngine.Random.Range(0, connections.Count); nextWaypoint = connections[nextIndex]; }while (nextWaypoint == previousWaypoint); { return(nextWaypoint); } } }
private void SetDestination() { if (waypointsVisited > 0) { ControlledWaypointsDog nextWaypoint = currentWaypoint.NextWaypoint(previousWaypoint); previousWaypoint = currentWaypoint; currentWaypoint = nextWaypoint; } Vector3 targetVector = currentWaypoint.transform.position; navMeshAgent.SetDestination(targetVector); travelling = true; }
// Use this for initialization void Start() { GameObject[] allWaypoints = GameObject.FindGameObjectsWithTag("Dog Waypoint"); connections = new List <ControlledWaypointsDog>(); for (int i = 0; i < allWaypoints.Length; i++) { ControlledWaypointsDog nextWaypoint = allWaypoints[i].GetComponent <ControlledWaypointsDog>(); if (nextWaypoint != null) { if (Vector3.Distance(this.transform.position, nextWaypoint.transform.position) <= connectedRadius && nextWaypoint != this) { connections.Add(nextWaypoint); } } } }
// Use this for initialization void Start() { navMeshAgent = GetComponent <NavMeshAgent>(); if (navMeshAgent == null) { Debug.LogError("The nav mesh agent component is not attahced to " + gameObject.name); } else { if (currentWaypoint == null) { GameObject[] allWaypoints = GameObject.FindGameObjectsWithTag("Dog Waypoint"); if (allWaypoints.Length > 0) { while (currentWaypoint == null) { int random = UnityEngine.Random.Range(0, allWaypoints.Length); ControlledWaypointsDog startingWaypoint = allWaypoints[random].GetComponent <ControlledWaypointsDog>(); if (startingWaypoint != null) { currentWaypoint = startingWaypoint; } } } else { Debug.LogError("Failed to find any waypoints for use in the scene."); } } } SetDestination(); }