- Home /
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];)
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.
}
}
}
Answer by MD_Reptile · Apr 07, 2017 at 02:58 PM
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.
Your answer
Follow this Question
Related Questions
Generating a curvy path 1 Answer
Unity 2D : How to make a perfect clone of my Game Object? 3 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Detect Near objects 0 Answers