array index out of range
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 () {
if (transform.position == patrolPoints[currentPoint].position)
{
currentPoint ++;
}
transform.position = Vector3.MoveTowards (transform.position, patrolPoints [currentPoint].position, moveSpeed * Time.deltaTime);
}
}
You did not give me anything to go on. The only this that I could do was fix it so thet you dont get the error anymore by perfor$$anonymous$$g range checking
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Patrol : $$anonymous$$onoBehaviour
{
public List<Transform> patrolPoints = new List<Transform>();
public float moveSpeed;
private int currentPoint;
// Use this for initialization
void Start ()
{
if (patrolPoints.Count > 0)
{
transform.position = patrolPoints[0].position;
}
currentPoint = 0;
}
// Update is called once per frame
void Update ()
{
if (patrolPoints.Count > currentPoint)
{
if (transform.position == patrolPoints[currentPoint].position)
{
currentPoint ++;
}
transform.position = Vector3.$$anonymous$$oveTowards (transform.position, patrolPoints [currentPoint].position, moveSpeed * Time.deltaTime);
}
}
}
It is likely the reason he is having that issue. I agree. If he is using a list and not an array he can use patrolPoints.Count or an array would would be patrolPoints.Length. Either way he just wasn't checking for OOB
Answer by iAmAwsum · Dec 05, 2016 at 03:17 PM
You're not checking if the index entered is larger than your array and so it gives you an error. Just simply add another if statement:
if (transform.position == patrolPoints[currentPoint].position && currentPoint <= patrolPoints.Length)
{
currentPoint ++;
}
Scenario
currentPoint
is equal topatrolPoints.Length
(currentPoint <= patrolPoints.Length)
== true == error the next timetransform.position == patrolPoints[currentPoint].position
occurs