IEnumerator Attack() { while (state == State.Attack && !isDead && health.health > 0 && target.GetComponent <HealthController>().health > 0) { anim.SetTrigger("Attack"); if (transform.name.Contains("Gunner")) { fireProjectile.Shoot(); yield return(new WaitForSeconds(.5f)); fireProjectile.Shoot(); yield return(new WaitForSeconds(.5f)); fireProjectile.Shoot(); yield return(new WaitForSeconds(2f)); } else if (transform.name.Contains("Sniper")) { fireProjectile.Shoot(); yield return(new WaitForSeconds(6f)); } else if (transform.name.Contains("Rifleman")) { fireProjectile.Shoot(); yield return(new WaitForSeconds(2f)); } float dist = Vector3.Distance(transform.position, target.position); if (dist > attackDist || GameManager.instance.targetsRemaining == 0) { state = State.Move; } } }