/// <summary> /// Don't manage collision if the game hasn't started. /// Kills player if player runs into dangerous things. /// Player will bounce off of objects that it can bounce off of. /// </summary> /// <param name="collision">Object the player is colliding with.</param> private void OnCollisionEnter2D(Collision2D collision) { if (!GlobalManager.instance.IsGameStarted()) { return; } /* * TODO: if touching lava or spikes player should always die */ if (collision.gameObject.CompareTag("OHKO") && !invincible) { Die(); return; } // if not touching lava nor spikes, test if we can // jump off of the object we're touching if (CanBounce()) { foreach (ContactPoint2D point in collision.contacts) { if (point.normal.y >= JUMP_THRESHHOLD) { Jump(); canBounce = BOUNCE_TIMER; Jukebox.Instance.PlaySFX("Jump", 0.5f, 1f); Killable k = collision.gameObject.GetComponent <Killable>(); if (k != null) { killParticles.Play(); GlobalManager.instance.camController.Shake(0.1f, 0.25f, 1.0f); GlobalManager.instance.AddScore(k.GetScoreWorth()); GlobalManager.instance.AddKarma(k.GetKarmaWorth()); if (k.GetKarmaWorth() != 0) { UIManager.instance.PopUpKarma(k.gameObject, Mathf.FloorToInt(k.GetKarmaWorth()), k.GetKarmaWorth() > 0 ? Color.white : Color.red); } Jukebox.Instance.PlaySFX("Dmg2", 0.5f, 1f); Destroy(k.gameObject); } else { jumpParticles.Play(); } return; } } } // if not on top of other object // see if it will kill you if (collision.gameObject.CompareTag("Enemy") && !invincible) { Die(); } else if (collision.gameObject.CompareTag("Holy")) { collision.gameObject.GetComponent <Angel>().Bless(); // LMF } }