- Home /
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
Answer by conman79 · Oct 01, 2016 at 07:15 PM
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 ();
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612093738im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Multiple Colliders On A Single Object Detecting Each Collider In OnTriggerEnter() 1 Answer
help needed: death on collision, fade then restart 1 Answer
How to restart the level upon cantact 1 Answer
How can i make my scene restart once my character has collided with another object? 2 Answers
Character on rails ignores collision for some moments 0 Answers