void OnTriggerEnter2D(Collider2D collider) { if (collider.tag == "Ball") { GameControl gc = GameObject.Find("GameControl").GetComponent <GameControl>(); PlatformBehavior platform = player.GetComponent <PlatformBehavior>(); if (!GameData.FriendlyFire && collider.gameObject.GetComponent <BallBehavior>().lastPlayer == player) { gc.SpawnBall(); return; } Debug.Log("Killing player " + player.name); audioSource.PlayOneShot(GameData.S_DeathSound); col.isTrigger = false; collider.gameObject.layer = 8; sr.material = dead; if (platform.Horizontal) { player.GetComponent <HorizontalPlatformMovement>().Speed = 0; } else { player.GetComponent <VerticalPlatformMovement>().Speed = 0; } player.GetComponent <BoxCollider2D>().enabled = false; gc.players.Remove(player); BallBehavior bb = collider.gameObject.GetComponent <BallBehavior>(); if (bb.lastPlayer != null) { PlatformBehavior pb = bb.lastPlayer.GetComponent <PlatformBehavior>(); PlayerCardBehavior pcb = pb.playerCard.GetComponent <PlayerCardBehavior>(); pcb.KillCountUpdate(1); pcb.BallCountUpdate(-1); } platform.CancelInvoke("Bored"); if (platform.PostDeathControl) { if (gc.Flaps.Exists(x => !x.GetComponent <Flap>().taken)) { Flap f = gc.Flaps.First(x => !x.taken); f.taken = true; f.AssignPlayer(player.GetComponent <BasePlatformMovement>(), true); } if (gc.Flaps.Count > 3 && gc.Flaps.Exists(x => !x.GetComponent <Flap>().taken)) { Flap f = gc.Flaps.First(x => !x.taken); f.taken = true; f.AssignPlayer(player.GetComponent <BasePlatformMovement>(), false); } } string[] anims = platform.deathAnims; player.GetComponent <Animator>().Play(anims[Random.Range(0, anims.Length)], 0); foreach (GameObject ball in gc.balls) { ball.GetComponent <Rigidbody2D>().velocity *= gc.SpeedUpOnKill; } if (gc.players.Where(x => x.activeSelf).Count() == 1) { gc.Winner(gc.players[0]); } } }