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, land);
- 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);
- };
- 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) //Hardcodea el timer
- {
- squat.myself.testFloat = 0;
- squat.myself.fsm.Feed(Conditions.nextAnim);
- }
- };
- rise.OnEnter += () =>
- {
- rise.myself.myAnim.SetInteger("ClipID", AnimationIDs.rise);
- rise.myself.rb.AddForce(0, rise.myself.jumpImpulse, 0);
- };
- rise.OnUpdate += () =>
- {
- if (Input.GetKeyDown(KeyCode.J))
- {
- rise.myself.fsm.Feed(Conditions.jumpInput);
- }
- else if (rise.myself.rb.velocity.y < 0)
- {
- rise.myself.fsm.Feed(Conditions.nextAnim);
- }
- };
- dj.OnEnter += () =>
- {
- dj.myself.myAnim.SetInteger("ClipID", AnimationIDs.doubleJump);
- dj.myself.rb.AddForce(0, dj.myself.jumpImpulse, 0);
- };
- dj.OnUpdate += () =>
- {
- dj.myself.djTimer += Time.deltaTime;
- if (rise.myself.rb.velocity.y < 0 || dj.myself.djTimer >= 0.55f) //Hardcodea el timer
- {
- dj.myself.djTimer = 0;
- dj.myself.fsm.Feed(Conditions.nextAnim);
- }
- };
- fall.OnEnter += () => fall.myself.myAnim.SetInteger("ClipID", AnimationIDs.fall);
- fall.OnUpdate += () =>
- {
- if (fall.myself.isTouchingFloor) fall.myself.fsm.Feed(Conditions.nextAnim);
- if (Input.GetKeyDown(KeyCode.J)) fall.myself.fsm.Feed(Conditions.jumpInput);
- };
- land.OnEnter += () => land.myself.myAnim.SetInteger("ClipID", AnimationIDs.land);
- land.OnUpdate += () =>
- {
- land.myself.landTimer += Time.deltaTime;
- if (land.myself.landTimer >= 1.65f)
- {
- land.myself.landTimer = 0;
- land.myself.fsm.Feed(Conditions.nextAnim);
- }
- if (Input.GetKeyDown(KeyCode.J))
- {
- land.myself.landTimer = 0;
- land.myself.fsm.Feed(Conditions.jumpInput);
- }
- };
- //Ejecuta
- var sm = new CharacterFSM<Conditions>();
- sm.FirstState(idle);
- character.SetFSM(sm);
- }
- }
Add Comment
Please, Sign In to add comment