Hello all,
Let me start off by saying that I started out as a noob to programming/scripting before touching Unity, so apologies if this is a simple question.
In my game, I’m trying to make a vehicle follow waypoints. To do this, I made a gameobject (called Circuit), with a script attached that manages the waypoints. The script builds an array of all waypoints (children of the gameobject ‘Circuit’) and has a public Transform that references the transform component of the currently active waypoint.
The script references the first waypoint correctly, but I’m encountering a NullReferenceException as soon as the vehicle moves in range of the first waypoint, and the script attempts to reference the second waypoint. I’m getting a NullReferenceException, which is a common error, I gather. However, none of the explanations or examples online seem to help me resolve my issue.
The code is attached below:
using UnityEngine;
using System.Collections;
public class WaypointManager : MonoBehaviour {
private Transform[] waypointArray1; // First array used to load all children of gameobject that has all the waypoints as children.
private Transform[] waypointArray2; // Second array used to load all children minus the gameobject itself.
public int childCount; // The number of waypoints.
private float waypointTimer; // Not yet used.
public Rigidbody Vehicle; // The vehicle that follows the waypoints.
public int activeWaypointNo; // The current waypoint number.
public Transform activeWaypoint; // References the current waypoint.
public float tagDistanceSqr; // The distance at which a waypoint is seen as 'tagged', and the next waypoint becomes active.
// Use this for initialization
void Start () {
childCount = GetComponentsInChildren<Transform>().Length-1;
activeWaypointNo = childCount-1;
Transform[] waypointArray2 = new Transform[childCount];
Transform[] waypointArray1 = GetComponentsInChildren<Transform>();
for (int i = 1; i < childCount+1f; i++) {
waypointArray2 [i - 1] = waypointArray1 *;*
-
}*
-
activeWaypoint = waypointArray2 [activeWaypointNo].transform;*
-
}*
-
// Update is called once per frame*
-
void FixedUpdate () {*
-
if (((Mathf.Pow ((activeWaypoint.position.x - Vehicle.position.x), 2f)) + (Mathf.Pow ((activeWaypoint.position.y - Vehicle.position.y), 2f))) <= tagDistanceSqr && activeWaypointNo > 0) { //This checks if the vehicle is within distance of the waypoint, signalling the next waypoint to become active.*
-
activeWaypointNo = activeWaypointNo - 1;*
-
activeWaypoint = waypointArray2[activeWaypointNo]; // Exception is thrown at this line: 'System.NullReferenceException has been thrown'*
-
}*
-
}*
}
Thanks in advance for any help!