예제 #1
0
    /// <summary>
    /// Setup the state machine.
    /// </summary>
    protected override void MakeFSM()
    {
        base.MakeFSM();

        PlayerWalk walk = new PlayerWalk(StateID.Walk, this);
        walk.AddTransition(Transition.DestinationReached, StateID.Idle);
        walk.AddTransition(Transition.FoundPlayer, StateID.Finished);

        PlayerIdle idle = new PlayerIdle(StateID.Idle, this);
        idle.AddTransition(Transition.WalkToDestination, StateID.Walk);
        idle.AddTransition(Transition.FoundPlayer, StateID.Finished);

        PlayerFinished finished = new PlayerFinished(StateID.Finished, this.gameObject);

        fsm.AddState(walk);
        fsm.AddState(idle);
        fsm.AddState(finished);
    }
예제 #2
0
파일: Player.cs 프로젝트: wuguanyang/FSM
    private void Awake()
    {
        fsm = new FSMSystem <PlayerST, PlayerSN> ();

        var idle = new PlayerIdle(PlayerSN.Idle);

        idle.AddTransition(PlayerST.InputA, PlayerSN.Run);

        var run = new PlayerRun(PlayerSN.Run);

        run.AddTransition(PlayerST.InputB, PlayerSN.Idle);

        fsm.AddState(idle);
        fsm.AddState(run);

        fsm.SetCurrentState(PlayerSN.Idle);

        Debug.Log(fsm.states.Count);
    }
예제 #3
0
    /// <summary>
    /// Initializes all the states in the network.
    /// </summary>
    private void CreateNetwork()
    {
        dead     = new PlayerDead(this);
        idle     = new PlayerIdle(this);
        walking  = new PlayerWalking(this);
        jumping  = new PlayerJumping(jumpBufferTime, 0.1f, this);
        rising   = new PlayerRising(this);
        falling  = new PlayerFalling(this, 1f);
        flipping = new PlayerFlipping(flipTime, flipOffset, this);

        idle.AddTransition(dead);
        idle.AddTransition(walking);
        idle.AddTransition(rising);
        idle.AddTransition(falling);
        idle.AddTransition(jumping);
        idle.AddTransition(flipping);

        walking.AddTransition(dead);
        walking.AddTransition(rising);
        walking.AddTransition(falling);
        walking.AddTransition(idle);
        walking.AddTransition(jumping);
        walking.AddTransition(flipping);

        jumping.AddTransition(dead);
        jumping.AddTransition(idle);
        jumping.AddTransition(rising);
        jumping.AddTransition(falling);

        rising.AddTransition(dead);
        rising.AddTransition(idle);
        rising.AddTransition(falling);
        rising.AddTransition(flipping);

        falling.AddTransition(dead);
        falling.AddTransition(idle);
        falling.AddTransition(rising);
        falling.AddTransition(flipping);

        flipping.AddTransition(walking);
        flipping.AddTransition(falling);

        activeState = idle;
    }