IEnumerator FreezeEnemies(List <GameObject> targetObjects) { while (targetObjects.Count > 0) { //Freeze Animation towerParticles.GetComponent <ParticleSystem>().Play(); foreach (var target in targetObjects) { EnemyAI enemy = target.GetComponent <EnemyAI>(); if (enemy.isActiveAndEnabled) { if (Random.Range(0, 100) <= stunChance * 100) { enemy.ApplyStunEffect(debuffParticles, stunTime); } } enemy.TakeDamage(damage); } float deltaTime = 0; while (deltaTime < timePerShot) { while (paused) { yield return(null); } deltaTime += Time.deltaTime; yield return(null); } } }