Esempio n. 1
0
    //Бъем игрока здесь
    private void Attack()
    {
        //Если есть задержка перед ударом -> считаем ее.
        if (_attackSpeed > 0)
        {
            _attackSpeed -= Time.deltaTime;
        }
        //Или же наносим игрока повреждения
        else
        {
            //Кидаем монетку от 0 до 100 на промах
            float randChance = Random.Range(0f, 100f);
            //Если выпало больше, то бьем (если <= то промах)
            if (randChance > NPC.Stats.MissChance)
            {
                //Снова выбрасываем монетку, только теперь на крит.
                randChance = Random.Range(0f, 100f);
                //Если выпало больше, то бьем обычный удар
                if (randChance > NPC.Stats.AttackCriticalChance)
                {
                    //атака во врага обычная
                    PLAYER_SCRIPT.TAKE_DAMAGE(Random.Range(NPC.Stats.MinDamage, NPC.Stats.MaxDamage));
                }
                else
                {
                    //атака во врага критом
                    PLAYER_SCRIPT.TAKE_DAMAGE(Random.Range(NPC.Stats.MinDamage * 2, NPC.Stats.MaxDamage * 2));
                }
            }
            else
            {
                //Можно вывести на экран, что атака не удалась
                Debug.Log("NPC MISS");
            }

            //Обнуляем задержку между атаками.
            _attackSpeed = NPC.Stats.AttackSpeed;
        }
    }