// 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());
            }
        }
Exemplo n.º 2
0
 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);
         }
     }
 }