Пример #1
0
 void Idle()
 {
     if (target && !target.GetComponent<ObjectStatus>().IsDead())
     {
         LookEnemy();
         var dist = Vector2.Distance(target.transform.position, transform.position);
         if (dist < objInfo.AttackRange)
         {
             State = TowerFSM.ATTACK;
         }
     }
     else
         target = null;
 }
Пример #2
0
 void Attack()
 {
     if (target && !target.GetComponent<ObjectStatus>().IsDead())
     {
         var dist = Vector2.Distance(target.transform.position, transform.position);
         if (dist > objInfo.AttackRange)
         {
             State = TowerFSM.IDLE;
             return;
         }
         StateTime += Time.deltaTime;
         if (StateTime > objInfo.AttackFrontDelay)
         {
             LookEnemy();
             AttackProcess();
             StateTime = -(objInfo.AttackBackDelay + UnityEngine.Random.Range(0.0f, 0.2f));
         }
     }
     else
     {
         State = TowerFSM.IDLE;
         target = null;
     }
 }
Пример #3
0
 //-----------------------------------------------------------------------------------
 // public functions
 public void Death()
 {
     State = TowerFSM.DEAD;
 }
Пример #4
0
 void OnDisable()
 {
     StopAllCoroutines();
     State = TowerFSM.IDLE;
     GameManager.instance.playerObjList.Remove(gameObject);
 }