private void OnCollisionEnter(Collision collision) { // Create impact string contactMaterial = collision.gameObject.tag; switch (contactMaterial) { case "Flesh": Instantiate(data.ParticleImpactPrefabFlesh(), transform.position, transform.rotation); break; case "Metal": Instantiate(data.ParticleImpactPrefabMetal(), transform.position, transform.rotation); break; } // Check if object can take damage, Player or Enemy layer (10 or 11) if (collision.gameObject.layer == 10 || collision.gameObject.layer == 11) { Status status = collision.gameObject.GetComponent <Status>(); status.TakeDamage(data.Damage()); } // Reset bullet movement and set inactive ready to use again GetComponent <Rigidbody>().velocity = Vector3.zero; gameObject.SetActive(false); }