anonymous anonymous
anonymous anonymous

Reputation: 208

nullreferenceexception object reference not set to an instance of an object unity

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

Answers (1)

Steven Mills
Steven Mills

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

Related Questions