KTVX94

Nate States

Mar 21st, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.34 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, land);
  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.         };
  44.         idle.OnUpdate += () =>
  45.         {
  46.             if (Input.GetKeyDown(KeyCode.J))
  47.             {
  48.                 Debug.Log("paso a squat");
  49.                 idle.myself.fsm.CheckIfExists();
  50.                 //idle.myself.fsm.currentState = idle;
  51.                 idle.myself.fsm.Feed(Conditions.jumpInput);
  52.  
  53.             }
  54.         };
  55.  
  56.  
  57.         squat.OnEnter += () => squat.myself.myAnim.SetInteger("ClipID", AnimationIDs.squat);
  58.         squat.OnUpdate += () =>
  59.         {
  60.             squat.myself.testFloat += Time.deltaTime;
  61.             squat.myself.rb.AddForce(0, squat.myself.jumpImpulse,0);
  62.             if (squat.myself.testFloat >= 0.1f) //Hardcodea el timer
  63.             {
  64.                 squat.myself.testFloat = 0;
  65.                 squat.myself.fsm.Feed(Conditions.nextAnim);
  66.             }
  67.         };
  68.  
  69.  
  70.         rise.OnEnter += () =>
  71.         {
  72.             rise.myself.myAnim.SetInteger("ClipID", AnimationIDs.rise);
  73.             rise.myself.rb.AddForce(0, rise.myself.jumpImpulse, 0);
  74.         };
  75.         rise.OnUpdate += () =>
  76.         {
  77.             if (Input.GetKeyDown(KeyCode.J))
  78.             {
  79.                 rise.myself.fsm.Feed(Conditions.jumpInput);
  80.             }
  81.             else if (rise.myself.rb.velocity.y < 0)
  82.             {
  83.                     rise.myself.fsm.Feed(Conditions.nextAnim);
  84.             }
  85.         };
  86.  
  87.         dj.OnEnter += () =>
  88.          {
  89.              dj.myself.myAnim.SetInteger("ClipID", AnimationIDs.doubleJump);
  90.              dj.myself.rb.AddForce(0, dj.myself.jumpImpulse, 0);
  91.          };
  92.         dj.OnUpdate += () =>
  93.         {
  94.             dj.myself.djTimer += Time.deltaTime;
  95.             if (rise.myself.rb.velocity.y < 0 || dj.myself.djTimer >= 0.55f) //Hardcodea el timer
  96.             {
  97.                 dj.myself.djTimer = 0;
  98.                 dj.myself.fsm.Feed(Conditions.nextAnim);
  99.             }
  100.         };
  101.  
  102.  
  103.         fall.OnEnter += () => fall.myself.myAnim.SetInteger("ClipID", AnimationIDs.fall);
  104.         fall.OnUpdate += () =>
  105.         {
  106.             if (fall.myself.isTouchingFloor) fall.myself.fsm.Feed(Conditions.nextAnim);
  107.             if (Input.GetKeyDown(KeyCode.J)) fall.myself.fsm.Feed(Conditions.jumpInput);
  108.         };
  109.  
  110.         land.OnEnter += () => land.myself.myAnim.SetInteger("ClipID", AnimationIDs.land);
  111.         land.OnUpdate += () =>
  112.         {
  113.             land.myself.landTimer += Time.deltaTime;
  114.             if (land.myself.landTimer >= 1.65f)
  115.             {
  116.                 land.myself.landTimer = 0;
  117.                 land.myself.fsm.Feed(Conditions.nextAnim);
  118.             }
  119.             if (Input.GetKeyDown(KeyCode.J))
  120.             {
  121.                 land.myself.landTimer = 0;
  122.                 land.myself.fsm.Feed(Conditions.jumpInput);
  123.             }
  124.             };
  125.  
  126.         //Ejecuta
  127.         var sm = new CharacterFSM<Conditions>();
  128.         sm.FirstState(idle);
  129.         character.SetFSM(sm);
  130.     }
  131. }
Add Comment
Please, Sign In to add comment