private void Start() { _initRotation = this.transform.rotation; _input = GetComponent<rqgames.InputManagement.SwipeManager>(); _input.OnSwipeLeft.AddListener(MoveLeft); _input.OnSwipeRight.AddListener(MoveRight); _input.OnStationaryPressDownUp.AddListener((Vector2 screenPos) => _fsm.IssueCommand(FSMCommon.ATTACK_COMMAND)); _body = GetComponent<Rigidbody>(); _fsm = FiniteStateMachine<FSMCommon.State>.FromEnum(); AddDelayTransition(FSMCommon.State.Idle, FSMCommon.State.Attack, FSMCommon.ATTACK_COMMAND); AddDelayTransition(FSMCommon.State.Move, FSMCommon.State.Attack, FSMCommon.ATTACK_COMMAND); AddDelayTransition(FSMCommon.State.Attack, FSMCommon.State.Idle, FSMCommon.IDLE_COMMAND); AddDelayTransition(FSMCommon.State.Move, FSMCommon.State.Idle, FSMCommon.IDLE_COMMAND); AddDelayTransition(FSMCommon.State.Idle, FSMCommon.State.Move, FSMCommon.MOVE_COMMAND); AddDelayTransition(FSMCommon.State.Move, FSMCommon.State.Move, FSMCommon.MOVE_COMMAND); _fsm.OnEnter(FSMCommon.State.Attack, () => { Fire(); }); _fsm.OnEnter(FSMCommon.State.Idle, () => { _body.velocity = Vector3.zero; }); _fsm.OnEnter(FSMCommon.State.Move, () => { _body.velocity = Vector3.right * _lateralSign * _config.LateralSpeed; }); PlayerStateEnterTime = new Dictionary<FSMCommon.State, float>(); PlayerStateEnterTime[FSMCommon.State.Attack] = 0; PlayerStateEnterTime[FSMCommon.State.Move] = 0; _fsm.OnChange((from, to) => { PlayerStateEnterTime[to] = Time.time; }); _fsm.Begin(FSMCommon.State.Idle); }
private void Start() { _timerAttack = 0; int rndSign = UnityEngine.Random.Range(0, 100) % 2 == 0 ? 1 : -1; _rndMedium = UnityEngine.Random.Range(10f, 30f) * rndSign; InitialRotation = transform.rotation; _fsm = FiniteStateMachine <Playable.FSMCommon.State> .FromEnum(); _fsm.AddTransition(Playable.FSMCommon.State.Idle, Playable.FSMCommon.State.Attack, Playable.FSMCommon.ATTACK_COMMAND); _fsm.AddTransition(Playable.FSMCommon.State.Attack, Playable.FSMCommon.State.Idle, Playable.FSMCommon.IDLE_COMMAND); _fsm.AddTransition(Playable.FSMCommon.State.Move, Playable.FSMCommon.State.Idle, Playable.FSMCommon.IDLE_COMMAND); _fsm.AddTransition(Playable.FSMCommon.State.Idle, Playable.FSMCommon.State.Move, Playable.FSMCommon.MOVE_COMMAND); _fsm.AddTransition(Playable.FSMCommon.State.Attack, Playable.FSMCommon.State.Move, Playable.FSMCommon.MOVE_COMMAND); _fsm.OnEnter(Playable.FSMCommon.State.Attack, () => { Invoke(nameof(BackToIdle), 0.3f); Fire(); }); _fsm.OnExit(Playable.FSMCommon.State.Idle, () => { RotationOnLostIdle = transform.rotation; }); _fsm.Begin(Playable.FSMCommon.State.Idle); InitNPC(); }
void Awake() { Screen.showCursor = false; Screen.lockCursor = true; foreach (var value in System.Enum.GetValues(typeof(ClockState))) { clockMachine.AddState((int)value); } foreach (var value in System.Enum.GetValues(typeof(ClockCommand))) { clockMachine.AddCommand((int)value); } clockMachine.AddTransition((int)ClockState.SPAWNING, (int)ClockCommand.NEXT, (int)ClockState.SPAWNED); clockMachine.AddTransition((int)ClockState.SPAWNED, (int)ClockCommand.NEXT, (int)ClockState.DESPAWNING); clockMachine.AddTransition((int)ClockState.DESPAWNING, (int)ClockCommand.NEXT, (int)ClockState.DESPAWNED); clockMachine.AddTransition((int)ClockState.DESPAWNED, (int)ClockCommand.NEXT, (int)ClockState.SPAWNING); clockMachine.SetStateProcessOnEnter((int)ClockState.SPAWNING, MapSpawn); clockMachine.SetStateProcessOnEnter((int)ClockState.DESPAWNING, MapDespawn); clockMachine.Begin((int)ClockState.SPAWNING); MapSpawn(); Countdown(); }
public void ExpectValidCommandToInvokeTransition() { fsm.Begin(States.Idle); fsm.IssueCommand(LOAD_COMMAND); Assert.AreEqual(fsm.CurrentState, States.Loading); }