FighterStateIdle.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using UnityEngine;
  2. using System.Collections;
  3. public class FighterStateIdle : FighterState
  4. {
  5. public static FighterState Creator (Fighter fighter)
  6. {
  7. return new FighterStateIdle (fighter);
  8. }
  9. public FighterStateIdle (Fighter fighter)
  10. : base (fighter, FighterStateType.Idle)
  11. {
  12. mAnimName = FighterAnimatorHash.StateIdle;
  13. }
  14. public override void OnEnter (FighterStateType fromState, object param)
  15. {
  16. base.OnEnter(fromState, param);
  17. if (mFighter.IsVisible && mFighter.Ctrl!=null && mFighter.Ctrl.gameObject.activeInHierarchy && mFighter.Ctrl.Animator.runtimeAnimatorController!=null)
  18. mFighter.Ctrl.Animator.Play(mAnimName);
  19. if (!string.IsNullOrEmpty(mFighter.IdleSound))
  20. {
  21. MusicMgr.Instance.PlayFightSound(mFighter.IdleSound);
  22. }
  23. }
  24. public override void OnLeave()
  25. {
  26. base.OnLeave();
  27. if (!string.IsNullOrEmpty(mFighter.IdleSound))
  28. {
  29. MusicMgr.Instance.RemoveSound(mFighter.IdleSound);
  30. }
  31. }
  32. public override void OnDataChanged ()
  33. {
  34. if (!mStateData.IsAlive)
  35. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Die : FighterStateType.BeHitDown);
  36. else if (mStateData.IsVertigo)
  37. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Vertigo : FighterStateType.BeHitDown);
  38. else if (mStateData.IsSleep)
  39. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Sleep : FighterStateType.BeHitDown);
  40. else if (mStateData.IsStark)
  41. mStateData.ChangeState(FighterStateType.Stark);
  42. else if (!mStateData.IsGround)
  43. mStateData.ChangeState(FighterStateType.Down);
  44. }
  45. public override FighterStateType GetTriggerNextState (FighterStateTriggerType triggerType, int checkVal = 0)
  46. {
  47. switch (triggerType) {
  48. case FighterStateTriggerType.Attack:
  49. return FighterStateType.Attack;
  50. case FighterStateTriggerType.BeHit:
  51. return FighterStateType.BeHit;
  52. case FighterStateTriggerType.NavRun:
  53. return FighterStateType.NavRun;
  54. case FighterStateTriggerType.Run:
  55. return FighterStateType.Run;
  56. default:
  57. return FighterStateType.None;
  58. }
  59. }
  60. }