Getting an error even if the script works.

It’s a pathfinding script. Even when the object completes it’s path and goes back to the original point, I still get an error “Array index out of range” in line 39. (targetWayPoint = wayPointList[currentWayPoint]:wink:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PathFollow : MonoBehaviour {

public Transform[] wayPointList;
public int currentWayPoint = 0;
Transform targetWayPoint;
public float speed = 4f;

void Start()
{

}

void Update()
{
    if (currentWayPoint < this.wayPointList.Length)
    {
        if (targetWayPoint == null)
            targetWayPoint = wayPointList[currentWayPoint];
        Walk();
    }
    else if (currentWayPoint > wayPointList.Length - 1) {
        currentWayPoint = 0;
        targetWayPoint = wayPointList[currentWayPoint];
        Walk();
    }
}

void Walk()
{
    transform.forward = Vector3.RotateTowards(transform.forward, targetWayPoint.position - transform.position, speed * Time.deltaTime, 0.0f);
    transform.position = Vector3.MoveTowards(transform.position, targetWayPoint.position, speed * Time.deltaTime);
    if (transform.position == targetWayPoint.position)
    {
        currentWayPoint++;
        targetWayPoint = wayPointList[currentWayPoint];   //I'm getting the error here.
    }
}

}

Then that “currentWayPoint” variable you use as the index, is going beyond the maximum length of the “wayPointList” array. Remember that arrays start at 0, not 1 (the index anyway), so you have to consider that while you code.

One simple way to handle it might be to check if currentWayPoint is higher than wayPointList.Length - 1 before doing anything using the wayPointList array.