array index out of range
Hey,
Following a tutorial I'm trying to get a cube to patrol in 3 points. I created an array, made its size 3 and added all the patrol points. I added printf to attempt to debug. I have no idea why it keeps setting the array size to 0. All prefabs are set in the inspector, see attached screenshot.
screenshot: http://i.imgur.com/n1Hu9YE.png
This is my console:
IndexOutOfRangeException: Array index is out of range.
Patrol.Start () (at Assets/Scripts/Patrol.cs:11)
3
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
0
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
IndexOutOfRangeException: Array index is out of range.
Patrol.Update () (at Assets/Scripts/Patrol.cs:19)
3
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
0
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
IndexOutOfRangeException: Array index is out of range.
Patrol.Update () (at Assets/Scripts/Patrol.cs:19)
3
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
0
UnityEngine.MonoBehaviour:print(Object)
Patrol:Update() (at Assets/Scripts/Patrol.cs:17)
IndexOutOfRangeException: Array index is out of range.
Patrol.Update () (at Assets/Scripts/Patrol.cs:19)
This is my code:
using UnityEngine;
using System.Collections;
public class Patrol : MonoBehaviour {
public Transform[] patrolPoints;
public float moveSpeed;
private int currentPoint;
// Use this for initialization
void Start () {
transform.position = patrolPoints[0].position;
currentPoint = 0;
}
// Update is called once per frame
void Update () {
print (patrolPoints.Length);
if (transform.position == patrolPoints[currentPoint].position){
currentPoint++;
}
if (currentPoint >= patrolPoints.Length) {
currentPoint = 0;
}
transform.position = Vector3.MoveTowards (transform.position, patrolPoints [currentPoint].position, moveSpeed * Time.deltaTime);
}
}
This is line 11
transform.position = patrolPoints[0].position;
This is line 19
if (transform.position == patrolPoints[currentPoint].position){
It should be noted that the actual cube patrols correctly, resets correctly and generally behaves as expected. The only issue is this apparent exception that I can't figure out.
Answer by say_forever · Nov 09, 2015 at 08:11 AM
because you did not initialize patrolPoints[] !
so when you call line11,
we can't read what is in patrolPoints[0].
Your answer
Follow this Question
Related Questions
only keep every 10th entry in an array? 2 Answers
Array[] of children of a child 3 Answers
Getting the element that has the same element number on another list ? 2 Answers
Array 2D of data 1 Answer