예제 #1
0
    public void TookDamage(int damage, int criticalStrikeChance, float criticalStrikeDamage, NamePlate enemyNamePlate)
    {
        int crit = Random.Range(0, 100);

        if (crit <= criticalStrikeChance)
        {
            float finalDamage = damage * criticalStrikeDamage;
            finalDamage = Mathf.RoundToInt(finalDamage + .4f);
            health     -= (int)finalDamage;
            GameObject cbt = Instantiate(criticalCombatText, enemyCanvas.transform.position, enemyCanvas.transform.rotation, enemyCanvas.transform);
            cbt.GetComponent <Text>().text = finalDamage.ToString();
        }
        else
        {
            health -= damage;
            GameObject cbt = Instantiate(combatText, enemyCanvas.transform.position, enemyCanvas.transform.rotation, enemyCanvas.transform);
            cbt.GetComponent <Text>().text = damage.ToString();
        }

        if (Target.target == gameObject)
        {
            enemyNamePlate.UpdateHealth(health);
        }

        if (health <= 0 && !isDead)
        {
            isDead = true;
            anim.SetBool("Dead", true);

            if (damageCollider)
            {
                damageCollider.enabled = false;
            }

            if (spawnManager.activeEnemies.Contains(gameObject))
            {
                spawnManager.CheckStage(gameObject);
            }

            enemyNamePlate.DisableNamePlate();
            Destroy(gameObject, 5);
        }
    }