private void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Meteor")) { //play some collision audio audioData.PlayOneShot(meteor_collision_audio); GameObject part = collision.contacts[0].thisCollider.gameObject; // despawn Meteor meteorSpawnScript.AddDeactivatedMeteor(collision.gameObject); //only damage ship parts if (!part.Equals(this.gameObject)) { broken[part.GetComponent <ShipPart>().partNumber] = true; collideEffect(part.GetComponent <ShipPart>().partNumber); part.SetActive(false); } // do something when all parts are broken or main part was hit if (part.Equals(this.gameObject)) { for (int i = 4; i >= 0; i--) { if (!broken[i]) { broken[i] = true; shipParts[i].gameObject.SetActive(false); collideEffect(i); break; } if (i == 0) { // TODO lose the game! loadScene.LoadGameOverScreen(); } } } } if (collision.gameObject.CompareTag("Collectible")) { audioData.PlayOneShot(collectible_collision_audio); meteorSpawnScript.AddDeactivatedCollectible(collision.gameObject); //TODO add method logic.GetComponent <GameLogic>().AddCollectible(); } }