protected override bool OnStartState() { UnitFSM fSM = currentUnit.fSM as UnitFSM; fSM.ForceChangeState(UnitFSM.UnitStates.MOVE); return(true); }
private bool Move(Unit u, UnitFSM fsm) { int steps = u.Stats.MoveRange;// Random.Range(1, u.Stats.MoveRange); if (steps == 0) { return(false); } u.CurrentPath = RecalculatePathToSteps(u.CurrentPath, u); fsm.ForceChangeState(UnitFSM.UnitStates.MOVE); isMoving = true; return(true); }
private bool Attack(Unit u, UnitFSM fsm) { Unit enemy = null; if (CheckEnemyInRange(u, out enemy)) { u.CurrentEnemy = enemy; fsm.ForceChangeState(UnitFSM.UnitStates.ATTACK); isAttacking = true; Debug.Log("Enemy attacked"); return(true); } return(false); }
public override bool ExecuteState(FSM fsm) { FSM = fsm as UnitFSM; target = FSM.GetUnitOwner().CurrentEnemy; if (!isInit) { UnitFSM targetFSM = target.fSM as UnitFSM; targetFSM.ForceChangeState(UnitFSM.UnitStates.ATTACKED); isInit = OnStartState(); } if (OnExecuteState() || ForceQuit) { return(OnEndState()); } return(false); }