- Home /
 
OnCollisonEnter2D not working
Ok, so I'm using this code: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;
 public class CollisionPlayer : MonoBehaviour
 {
     public bool alreadyDied = false;
 
     public GameObject player;
 
     public float timeDeath;
 
     public ParticleSystem particles;
 
     public GameObject explosionGO;
 
     private SpriteRenderer sr;
 
     private BoxCollider2D bc;
 
     private PlayerController walkScript;
 
     void Start()
     {
         sr = GetComponent<SpriteRenderer>();
 
         bc = GetComponent<BoxCollider2D>();
 
         walkScript = GetComponent<PlayerController>();
     }
 
     void OnCollisionEnter2D (Collision2D collide)
     {
         if (collide.gameObject.CompareTag("Dead"))
         {
             Instantiate(particles, player.transform.position, Quaternion.identity);
 
             Instantiate(explosionGO, player.transform.position, Quaternion.identity);
 
             CinemachineShake.Instance.ShakeCamera(30f, .1f);
 
             alreadyDied = true;
         }
     }
 
     void Update()
     {
         if(alreadyDied == true)
         {
             timeDeath -= Time.deltaTime;
             sr.enabled = false;
             bc.enabled = false;
             walkScript.enabled = false;
         }
 
         if(timeDeath <= 0)
         {
             SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
         }
     }
 }
 
               This is the bullet's code. using System.Collections; using System.Collections.Generic; using UnityEngine;
 public class LeftBulletScript : MonoBehaviour
 {
     // Start is called before the first frame update
     public float speed;
     public float destructionLeftTime;
 
     public ParticleSystem particles;
 
     private GameObject thisGameObject;
 
     void Start()
     {
         thisGameObject = this.gameObject;
         Destroy(gameObject, destructionLeftTime);
     }
 
     void Update()
     {
         transform.Translate(Vector2.left * speed * Time.deltaTime);
 
         if(destructionLeftTime > 0.05f)
         {
             destructionLeftTime -= Time.deltaTime;
         }
         else 
         {
             Instantiate(particles, thisGameObject.transform.position, Quaternion.identity);
         }
     }
 }
 
 
               This code should spawn some particles and a sound effect when the player gets hit by something with tag "Dead". But that does not happen. I have a box collider 2D on both the bullet ( that should kill me ) and the player. My Rigidbody2D is dynamic on the player with z freezed. The bullet does not have a rigidbody. I made sure that the bullet actually has the tag "Dead", spelled the exact same way as the way I wrote on the script. The weirdest thing is that I used this code on another game and nothing changed ( just the name of a script ). Both the player and the bullet are on the same layer. Anyone could tell me what could have happened?
Your answer
 
             Follow this Question
Related Questions
How do I have a game object access the enums on another game object on collision? 1 Answer
OnCollisionEnter2D and OnCollisionExit2D issue 1 Answer
Does a collision occur when a collider 2d is enabled on top of another? 0 Answers
HOW TO CALLBACK COLLIDER WITH NAME? 2 Answers
On 2DCollision, particle system prefab does not play 0 Answers