Advertisement
KTVX94

Generador de States

Mar 19th, 2019
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.48 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class NateStates
  6. {
  7.     public CharState<Conditions> idle;
  8.     public CharState<Conditions> squat;
  9.     public CharState<Conditions> rise;
  10.     public CharState<Conditions> fall;
  11.     public CharState<Conditions> dj;
  12.     public CharState<Conditions> land;
  13.     public void DeclareStates(CharacterBase character)
  14.     {
  15.         //Declarar
  16.         idle = new CharState<Conditions>("Idle", character);
  17.         squat = new CharState<Conditions>("Jumpsquat", character);
  18.         rise = new CharState<Conditions>("Rise", character);
  19.         fall = new CharState<Conditions>("Fall", character);
  20.         dj = new CharState<Conditions>("Double Jump", character);
  21.         land = new CharState<Conditions>("Landing", character);
  22.  
  23.         //Transiciones
  24.         idle.AddTransition(Conditions.jumpInput, squat);
  25.  
  26.         squat.AddTransition(Conditions.nextAnim, rise);
  27.  
  28.         rise.AddTransition(Conditions.nextAnim, fall);
  29.         rise.AddTransition(Conditions.jumpInput, dj);
  30.  
  31.         fall.AddTransition(Conditions.nextAnim, idle);
  32.         fall.AddTransition(Conditions.jumpInput, dj);
  33.  
  34.         dj.AddTransition(Conditions.nextAnim, fall);
  35.  
  36.         land.AddTransition(Conditions.nextAnim, idle);
  37.         land.AddTransition(Conditions.jumpInput, squat);
  38.  
  39.         //Efectos
  40.         idle.OnEnter += () =>
  41.         {
  42.             idle.myself.myAnim.SetInteger("ClipID", AnimationIDs.idle);
  43.             if (idle.myself != null)
  44.             {
  45.                 Debug.Log("myself existe");
  46.                 if (idle.myself.fsm == null) Debug.Log("fsm no existe");
  47.                 if (idle.GetTransition(Conditions.jumpInput).name == "Jumpsquat") Debug.Log("Hay jumpsquat");
  48.             }
  49.  
  50.         };
  51.         idle.OnUpdate += () =>
  52.         {
  53.             if (Input.GetKeyDown(KeyCode.J))
  54.             {
  55.                 Debug.Log("paso a squat");
  56.                 idle.myself.fsm.CheckIfExists();
  57.                 //idle.myself.fsm.currentState = idle;
  58.                 //idle.myself.fsm.Feed(Conditions.jumpInput);
  59.  
  60.             }
  61.         };
  62.  
  63.  
  64.         squat.OnEnter += () => squat.myself.myAnim.SetInteger("ClipID", AnimationIDs.squat);
  65.         squat.OnUpdate += () =>
  66.         {
  67.             squat.myself.testFloat += Time.deltaTime;
  68.             squat.myself.rb.AddForce(0, squat.myself.jumpImpulse,0);
  69.             if (squat.myself.testFloat >= 0.1f)
  70.             {
  71.                 squat.myself.testFloat = 0;
  72.                 Debug.Log("paso a rise");
  73.                 squat.myself.fsm.Feed(Conditions.nextAnim);
  74.             }
  75.         };
  76.  
  77.  
  78.         rise.OnEnter += () => rise.myself.myAnim.SetInteger("ClipID", AnimationIDs.rise);
  79.         rise.OnUpdate += () =>
  80.         {
  81.             if (Input.GetKeyDown(KeyCode.J))
  82.             {
  83.                 Debug.Log("paso a dj");
  84.                 rise.myself.fsm.Feed(Conditions.jumpInput);
  85.             }
  86.             else if (rise.myself.rb.velocity.y < 0)
  87.             {
  88.                 Debug.Log("paso a fall");
  89.                     rise.myself.fsm.Feed(Conditions.nextAnim);
  90.             }
  91.         };  
  92.  
  93.  
  94.         fall.OnEnter += () => fall.myself.myAnim.SetInteger("ClipID", AnimationIDs.fall);
  95.         fall.OnEnter += () =>
  96.         {
  97.             if (fall.myself.rb.velocity.y == 0) fall.myself.fsm.Feed(Conditions.nextAnim);
  98.         };
  99.  
  100.         //Ejecuta
  101.         var sm = new CharacterFSM<Conditions>();
  102.         sm.FirstState(idle);
  103.         character.SetFSM(sm);
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement