// Update is called once per frame public override TowerState Update(TowerController tower) { if (tower.Zap(tower.GetClosestEnemy()) == true) { switch (tower.currentAttack) { case TowerController.AttackType.Zap: tower.Zap(tower.GetClosestEnemy()); break; case TowerController.AttackType.Projectile: tower.Shoot(tower.GetClosestEnemy()); break; case TowerController.AttackType.Ice: tower.Freeze(tower.GetClosestEnemy()); break; default: break; } return(new TowerStateIdle()); } else { return(new TowerStateSearch()); } }
void FreezeAllTowersInRange() { foreach (TowerController t in towers) { float dis = (t.transform.position - transform.position).magnitude; // distance from tower to enemy if (dis < range) { t.TakeDamage(areaDamageTower); t.Freeze(freezeDuration); } } }