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; }
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; } }
//----------------------------------------------------------------------------------- // public functions public void Death() { State = TowerFSM.DEAD; }
void OnDisable() { StopAllCoroutines(); State = TowerFSM.IDLE; GameManager.instance.playerObjList.Remove(gameObject); }