Reputation: 208
this is my code for the player spawn but I'm getting a null reference exception error.
public class PlayerSpawn : MonoBehaviour
{
public Transform playerSpawn;
public Vector2 currentTrackPosition;
public bool activeRespawnTimer = false;
public float respawnTimer = 1.0f;
public float resetRespawnTimer = 1.0f;
void Start ()
{
if(playerSpawn != null)
{
transform.position = playerSpawn.position;
Debug.Log(playerSpawn);
}
}
void Update ()
{
if(activeRespawnTimer)
{
respawnTimer -= Time.deltaTime;
}
if(respawnTimer <= 0.0f)
{
transform.position = currentTrackPosition;
respawnTimer = resetRespawnTimer;
activeRespawnTimer = false;
}
}
void OnTriggerEnter2D(Collider2D other)
{
//im getting the error messege at this position
if(other.tag == "DeadZone")
{
activeRespawnTimer = true;
}
if(other.tag == "CheckPoint")
{
currentTrackPosition = transform.position;
}
}
}
What is the problem? Thank you for the help.
Upvotes: 0
Views: 6001
Reputation: 2381
Given the position you mention the null reference exception occurs, it appears as if either other
or other.tag
is null. Considering that OnTriggerEnter
is only called when an actual object enters the trigger, I highly doubt that other
is null, unless it's been destroyed prior to the method being called. In any case, it's better to be safe than sorry.
One simple solution would be the following:
void OnTriggerEnter2D(Collider2D other)
{
if(other != null && other.tag != null)
{
if(other.tag == "DeadZone")
{
activeRespawnTimer = true;
}
if(other.tag == "CheckPoint")
{
currentTrackPosition = transform.position;
}
}
}
If this still throws an exception, then it must be something else that's causing the problem, so let me know how this works out.
Upvotes: 1