Exemple #1
0
    protected virtual void BuildFSM()
    {
        IdleState idle = new IdleState();

        idle.AddTransitionState(FSMStateID.Shoot, FSMTransitions.SawPlayer);
        idle.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth);

        ShootState shoot = new ShootState(spawnerScript);

        shoot.AddTransitionState(FSMStateID.Idle, FSMTransitions.PlayerOutOfRange);
        shoot.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth);

        DeadState dead = new DeadState();

        AddFSMState(idle);
        AddFSMState(shoot);
        AddFSMState(dead);
    }
    void FSMInit()
    {
        _fsm = new FSM <States>();
        var move   = new MoveState <States>(SetupPathfinding, Run, _model, _leaderState, goal, criticalHealthAmount, team, distToGoal, _root);
        var attack = new AttackState <States>(_model, _leaderState, shootCD, team, criticalHealthAmount, _root);
        var flee   = new FleeState <States>(SetupPathfinding, Run, _model, _leaderState, secureZone, secureHealthAmount, distToSecureZone, _root);
        var idle   = new IdleState <States>(_model, _leaderState, goal, distToGoal, criticalHealthAmount, team, _root);

        move.AddTransitionState(States.Idle, idle);
        move.AddTransitionState(States.Attack, attack);
        move.AddTransitionState(States.Flee, flee);
        attack.AddTransitionState(States.Move, move);
        attack.AddTransitionState(States.Flee, flee);
        flee.AddTransitionState(States.Move, move);
        idle.AddTransitionState(States.Move, move);
        idle.AddTransitionState(States.Flee, flee);
        idle.AddTransitionState(States.Attack, attack);

        _fsm.SetInit(move);
    }
Exemple #3
0
    protected override void BuildFSM()
    {
        PassiveState passive = new PassiveState(activateRaidus);

        passive.AddTransitionState(FSMStateID.Chase, FSMTransitions.Awoken);
        passive.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth);

        IdleState idle = new IdleState();

        idle.AddTransitionState(FSMStateID.Chase, FSMTransitions.SawPlayer);
        idle.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth);

        ChaseState chase = new ChaseState(navAgent, agroDistance);

        chase.AddTransitionState(FSMStateID.Idle, FSMTransitions.PlayerOutOfRange);
        chase.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth);

        DeadState dead = new DeadState();

        AddFSMState(passive);
        AddFSMState(idle);
        AddFSMState(chase);
        AddFSMState(dead);
    }