Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class NateStates
- {
- public CharState<Conditions> idle;
- public CharState<Conditions> squat;
- public CharState<Conditions> rise;
- public CharState<Conditions> fall;
- public CharState<Conditions> dj;
- public CharState<Conditions> land;
- public void DeclareStates(CharacterBase character)
- {
- //Declarar
- idle = new CharState<Conditions>("Idle", character);
- squat = new CharState<Conditions>("Jumpsquat", character);
- rise = new CharState<Conditions>("Rise", character);
- fall = new CharState<Conditions>("Fall", character);
- dj = new CharState<Conditions>("Double Jump", character);
- land = new CharState<Conditions>("Landing", character);
- //Transiciones
- idle.AddTransition(Conditions.jumpInput, squat);
- squat.AddTransition(Conditions.nextAnim, rise);
- rise.AddTransition(Conditions.nextAnim, fall);
- rise.AddTransition(Conditions.jumpInput, dj);
- fall.AddTransition(Conditions.nextAnim, idle);
- fall.AddTransition(Conditions.jumpInput, dj);
- dj.AddTransition(Conditions.nextAnim, fall);
- land.AddTransition(Conditions.nextAnim, idle);
- land.AddTransition(Conditions.jumpInput, squat);
- //Efectos
- idle.OnEnter += () =>
- {
- idle.myself.myAnim.SetInteger("ClipID", AnimationIDs.idle);
- if (idle.myself != null)
- {
- Debug.Log("myself existe");
- if (idle.myself.fsm == null) Debug.Log("fsm no existe");
- if (idle.GetTransition(Conditions.jumpInput).name == "Jumpsquat") Debug.Log("Hay jumpsquat");
- }
- };
- idle.OnUpdate += () =>
- {
- if (Input.GetKeyDown(KeyCode.J))
- {
- Debug.Log("paso a squat");
- idle.myself.fsm.CheckIfExists();
- //idle.myself.fsm.currentState = idle;
- //idle.myself.fsm.Feed(Conditions.jumpInput);
- }
- };
- squat.OnEnter += () => squat.myself.myAnim.SetInteger("ClipID", AnimationIDs.squat);
- squat.OnUpdate += () =>
- {
- squat.myself.testFloat += Time.deltaTime;
- squat.myself.rb.AddForce(0, squat.myself.jumpImpulse,0);
- if (squat.myself.testFloat >= 0.1f)
- {
- squat.myself.testFloat = 0;
- Debug.Log("paso a rise");
- squat.myself.fsm.Feed(Conditions.nextAnim);
- }
- };
- rise.OnEnter += () => rise.myself.myAnim.SetInteger("ClipID", AnimationIDs.rise);
- rise.OnUpdate += () =>
- {
- if (Input.GetKeyDown(KeyCode.J))
- {
- Debug.Log("paso a dj");
- rise.myself.fsm.Feed(Conditions.jumpInput);
- }
- else if (rise.myself.rb.velocity.y < 0)
- {
- Debug.Log("paso a fall");
- rise.myself.fsm.Feed(Conditions.nextAnim);
- }
- };
- fall.OnEnter += () => fall.myself.myAnim.SetInteger("ClipID", AnimationIDs.fall);
- fall.OnEnter += () =>
- {
- if (fall.myself.rb.velocity.y == 0) fall.myself.fsm.Feed(Conditions.nextAnim);
- };
- //Ejecuta
- var sm = new CharacterFSM<Conditions>();
- sm.FirstState(idle);
- character.SetFSM(sm);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement