- Home /
Object reference error even though I've assigned the object in
var player : Transform;
var distance : float = Vector3.Distance(player.position , transform.position);
var speed : float = 2;
function Update ()
{
if(distance < 500){
transform.position = (player.position - transform.position ).normalized * speed * Time.deltaTime;
}}
This is the script . I've assigned the transform in the inspector as a AUG (which is parented to a fps controller) . When my enemy spawns it spawns but moves to the other side of the terrain , spasms and returns with -
NullReferenceException: Object reference not set to an instance of an object
AISimple..ctor () (at Assets/Tutorial 5/Tutorial 5/AISimple.js:2) UnityEngine.Object:Instantiate(Object, Vector3, Quaternion) spawn:Spawn() (at Assets/spawn.js:18) UnityEngine.GameObject:SendMessage(String) SpawnTrigger:OnTriggerEnter() (at Assets/SpawnTrigger.js:2) .
Even though I;ve already assigned it ? Help required please :)
Answer by Tomer-Barkan · Nov 10, 2013 at 04:52 PM
The transform is assigned to player
by the system automatically immediately after instantiating the object. The distance
variable, however, is initialized BEFORE the player is assigned by the system, because it is a class variable, so it is assigned automatically in the constructor (that's how C# language works, nothing to do with unity).
At this stage, the player
has not been assigned yet by the unity system, because the object has not been instantiated yet (remember, we are in it's constructor), so it's null and you're trying to access the position
value of a null object, which throws the null object exception.
Make your assignment to distance
in the Start()
method instead, and you should be fine:
var player : Transform;
var distance : float;
var speed : float = 2;
function Start()
{
distance = Vector3.Distance(player.position , transform.position);
}
function Update ()
{
if(distance < 500){
transform.position = (player.position - transform.position ).normalized * speed * Time.deltaTime;
}
}
Your answer
Follow this Question
Related Questions
How to activate a button? 1 Answer
Instantiate problem in a RTS game 0 Answers
How to add random force/Rotation to bulletEject. 1 Answer