Beispiel #1
0
    /// <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
        }
    }