//Бъем игрока здесь 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; } }