void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("PlayerProjectile") || other.gameObject.CompareTag("BouncerBullet") || other.gameObject.CompareTag("Explosion"))
        {
            float dmgValue;

            if (other.gameObject.CompareTag("Explosion"))
            {
                dmgValue = 6;
            }
            else
            {
                dmgValue = other.gameObject.GetComponent <Projectile>().dmgValue;
            }

            robot = GetComponentInParent <RobotController>();
            boss  = GetComponentInParent <BossController>();
            bat   = GetComponentInParent <BatController>();
            ghost = GetComponentInParent <GhostController>();

            // Robot Damage
            if (robot != null && !robot.dead)
            {
                if (Perks.lifesteal)
                {
                    DudeController.currentHealth += .1f * dmgValue;
                    DudeController.currentHealth  = Mathf.Clamp(DudeController.currentHealth, 0, DudeController.maxHealth);
                    UIHealthbar.instance.SetValue(DudeController.currentHealth / (float)DudeController.maxHealth);
                }

                if (robot.dead)
                {
                    return;
                }

                robot.Damage(dmgValue);
            }

            if (ghost != null && !ghost.dead)
            {
                if (Perks.lifesteal)
                {
                    DudeController.currentHealth += .1f * dmgValue;
                    DudeController.currentHealth  = Mathf.Clamp(DudeController.currentHealth, 0, DudeController.maxHealth);
                    UIHealthbar.instance.SetValue(DudeController.currentHealth / (float)DudeController.maxHealth);
                }

                if (ghost.dead)
                {
                    return;
                }

                ghost.Damage(dmgValue);
            }

            // Boss Damage
            if (boss != null)
            {
                if (Perks.lifesteal)
                {
                    DudeController.currentHealth += .1f * dmgValue;
                    DudeController.currentHealth  = Mathf.Clamp(DudeController.currentHealth, 0, DudeController.maxHealth);
                    UIHealthbar.instance.SetValue(DudeController.currentHealth / (float)DudeController.maxHealth);
                }

                if (boss.dead)
                {
                    GetComponent <BoxCollider2D>().enabled = false;
                    return;
                }

                boss.Damage(dmgValue);
            }

            // Bat Damage
            if (bat != null)
            {
                if (Perks.lifesteal)
                {
                    DudeController.currentHealth += .1f * dmgValue;
                    DudeController.currentHealth  = Mathf.Clamp(DudeController.currentHealth, 0, DudeController.maxHealth);
                    UIHealthbar.instance.SetValue(DudeController.currentHealth / (float)DudeController.maxHealth);
                }

                if (bat.dead)
                {
                    GetComponent <BoxCollider2D>().enabled = false;
                    return;
                }

                bat.Damage(dmgValue);
            }
        }

        if (other.gameObject.CompareTag("PlayerProjectile"))
        {
            Destroy(other.gameObject);
        }
    }