/// <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); }
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); }
/// <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; }