static void Main(string[] args) { //Primero, creas los estados que tendra tu maquina State hide = new HideState(); State attack = new AttackState(); State flee = new FleeState(); State dance = new DanceState(); // Luego, mapeamos cada estado y le damos etiquetas hide.setMap(new Dictionary <string, State> { { "notice_sempai", dance } }); attack.setMap(new Dictionary <string, State> { { "afraid", flee } }); flee.setMap(new Dictionary <string, State> { { "not_afraid", dance } }); dance.setMap(new Dictionary <string, State> { { "not_afraid", attack }, { "afraid", flee } }); // Creamos nuestro state machine, dandole un estado inicial ObjectStateMachine sm = new ObjectStateMachine(hide); if (sm.getState() is HideState) { Console.WriteLine("Se escondio"); } // Ahora le damos un input Dictionary <string, bool> input = new Dictionary <string, bool> { { "notice_sempai", true } }; sm.updateState(input); if (sm.getState() is DanceState) { Console.WriteLine("Te noticeo"); } }
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { danceStates = Enum.GetValues(typeof(DanceState)); random = new System.Random(); DanceState danceState = (DanceState)danceStates.GetValue(random.Next(danceStates.Length)); switch (danceState) { case DanceState.GangnamStyle: animator.SetTrigger("StartGangnamStyle"); break; case DanceState.HipHop: animator.SetTrigger("StartHipHop"); break; case DanceState.Shuffling: animator.SetTrigger("StartShuffling"); break; } }