My Player dies only when he wants to?!?

I have a problem where the character will not die randomly but he will at other times. for example if he falls into lava he should die but sometimes he can survive.

void OnCollisionEnter2D (Collision2D other)
	{

 if (other.gameObject.tag == "killbox" && spawnProtection == false && lava == true) {
			theGameManager.RestartGame ();
}
}

My lava contains the killbox tag, but it just won’t work properly. Yet if I remove the Lava == trueit will kill the player everytime he lands in the lava. I however need this condition to detect if the player is in collision with the lava to destroy him.

My lava snippet:

		lava = Physics2D.IsTouchingLayers (myCollider, whatIsLava);

Any help would be grateful! Thanks

It’s probably to do with the timing of OnCollisionEnter2D and IsTouchingLayers in the physics engine. OnCollisionEnter2D is only fired once and it may be before or after IsTouchingLayers is called.

Try checking for your lava layer in OnCollisionEnter2D instead.

void OnCollisionEnter2D(Collision other)
	{
		if (other.gameObject.tag == "killbox" && spawnProtection == false && other.gameObject.layer == whatIsLava) 
			theGameManager.RestartGame ();
	}