Search code examples
c#unity-game-enginemonogame

Unity How to make a gameobject going through waypoints endlessly?


I have this code:

using UnityEngine;
using UnityEngine.AI;
using System.Collections;


public class AutoPilot : MonoBehaviour {

public Transform[] points;
private int destPoint = 0;
private NavMeshAgent agent;


void Start () {
    agent = GetComponent<NavMeshAgent>();

    // Disabling auto-braking allows for continuous movement
    // between points (ie, the agent doesn't slow down as it
    // approaches a destination point).

    GotoNextPoint();
}


void GotoNextPoint() {
    // Returns if no points have been set up
    if (points.Length == 0)
        return;

    // Set the agent to go to the currently selected destination.
    agent.destination = points[destPoint].transform.position;

    // Choose the next point in the array as the destination,
    // cycling to the start if necessary.
    destPoint = (destPoint + 1) % points.Length;
}


void Update () {
    // Choose the next destination point when the agent gets
    // close to the current one.
    if (!agent.pathPending && agent.remainingDistance < 2f)
        GotoNextPoint();
}
}

Where I go through my waypoints and the agen follows them, but when I am at the last waypoint, how to make it restart itslef? to keep going? Is it possible to reset somehow or what is the best way?


Solution

  • I fixed it by adding this:

    if (destPoint == points.Length) {
            destPoint = 0;
        }