Exemple #1
0
    protected override bool OnStartState()
    {
        UnitFSM fSM = currentUnit.fSM as UnitFSM;

        fSM.ForceChangeState(UnitFSM.UnitStates.MOVE);
        return(true);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
    }
Exemple #4
0
    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);
    }