Exemple #1
0
    public void OnDamage(int damage, float knockback, Vector2 targetPosition, float coolDown, bool isBuff)
    {
        if (isAlive && canTakeDamage)
        {
            if (damage != 0)
            {
                health -= damage;
                GameUIManager.singleton.RemoveHeart(health);
                if (health > 0)
                {
                    Debug.Log("Health: " + health);
                    _motor.ForceJump(knockback * _motor.jumpHeight * 10);
                    int rAudio    = Random.Range(0, damageAudio.Length);
                    int rDialogue = Random.Range(0, damageDialogue.Length);
                    _bubbleDialogue.ForcePlay(damageDialogue[rDialogue], false, 0, damageAudio[rAudio]);
                    Instantiate(damageBlood, new Vector3(transform.position.x, transform.position.y + 0.5f), Quaternion.identity);
                }

                if (health <= 0)
                {
                    isAlive = false;
                    Debug.Log("Health: Dead");
                    Instantiate(deathBlood, new Vector3(transform.position.x, transform.position.y + 0.5f), Quaternion.identity);
                    Fade.singleton.FadeIn(3f);
                    GameManager.singleton.EndingGame(false);
                }
            }
            else
            {
                _motor.ForceJump(knockback * _motor.jumpHeight * 10);
            }
            if (isAlive)
            {
                StartCoroutine(CoolDownWait(coolDown, damage, isBuff));
            }
        }
    }