FighterStateBeHit.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using UnityEngine;
  2. using System.Collections;
  3. public struct FighterStateBeHitParam
  4. {
  5. public int hitMoveType;
  6. public Fix64 moveInitSpeed;
  7. public Fix64 moveAcceleration;
  8. public FixVector3 hitMovePos;
  9. public Fix64 stiffTime;
  10. public FighterStateBeHitParam (int moveType, Fix64 initSpeed, Fix64 acceleration, FixVector3 movePos, Fix64 stifftime)
  11. {
  12. hitMoveType = moveType;
  13. moveInitSpeed = initSpeed;
  14. moveAcceleration = acceleration;
  15. hitMovePos = movePos;
  16. this.stiffTime = stifftime;
  17. }
  18. }
  19. public class FighterStateBeHit : FighterState
  20. {
  21. public static FighterState Creator (Fighter fighter)
  22. {
  23. return new FighterStateBeHit (fighter);
  24. }
  25. public FighterStateBeHit (Fighter fighter)
  26. : base (fighter, FighterStateType.BeHit, true)
  27. {
  28. mAnimName = FighterAnimatorHash.StateBeHit1;
  29. }
  30. FighterStateBeHitParam mParam;
  31. public override void OnEnter (FighterStateType fromState, object param)
  32. {
  33. base.OnEnter(fromState, param);
  34. mParam = (FighterStateBeHitParam)param;
  35. if(mParam.hitMoveType > 0)
  36. {
  37. //DebugHelper.LogError(" ----fighter:" + mFighter.Name + " hitMoveType:" + mParam.hitMoveType + " initSpeed:" + mParam.moveInitSpeed + " acceleration:" + mParam.moveAcceleration + " movePos:" + mParam.hitMovePos);
  38. mFighter.PassiveMove.BeHitToMove(mParam.hitMoveType, mParam.moveInitSpeed, mParam.moveAcceleration, mParam.hitMovePos);
  39. mStateData.SetStarkTime(mFighter.PassiveMove.MoveTime);
  40. }
  41. if(!string.IsNullOrEmpty(mFighter.HitSound))
  42. {
  43. MusicMgr.Instance.PlayFightSound(mFighter.HitSound);
  44. }
  45. }
  46. public override void Update (float deltaTime)
  47. {
  48. //if(mParam.hitMoveType > 0)
  49. //{
  50. // mFighter.PassiveMove.Update(deltaTime);
  51. //}
  52. }
  53. public override void OnLeave()
  54. {
  55. base.OnLeave();
  56. if (!string.IsNullOrEmpty(mFighter.HitSound))
  57. {
  58. MusicMgr.Instance.RemoveSound(mFighter.HitSound);
  59. }
  60. }
  61. public override void OnDataChanged ()
  62. {
  63. if (!mStateData.IsAlive)
  64. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Die : FighterStateType.BeHitDown);
  65. else if (mStateData.IsVertigo)
  66. mStateData.ChangeState(FighterStateType.Vertigo);
  67. else if (mStateData.IsSleep)
  68. mStateData.ChangeState(FighterStateType.Sleep);
  69. else if (mStateData.IsStark)
  70. mStateData.ChangeState(FighterStateType.Stark);
  71. else if (!mStateData.IsStiff)
  72. mStateData.ChangeState(mStateData.GetIdleNext());
  73. }
  74. public override FighterStateType GetTriggerNextState (FighterStateTriggerType triggerType, int checkVal = 0)
  75. {
  76. switch (triggerType)
  77. {
  78. case FighterStateTriggerType.Attack:
  79. return FighterStateType.Attack;
  80. case FighterStateTriggerType.BeHit:
  81. return FighterStateType.BeHit;
  82. case FighterStateTriggerType.Run:
  83. return FighterStateType.Run;
  84. case FighterStateTriggerType.NavRun:
  85. return FighterStateType.NavRun;
  86. default:
  87. return FighterStateType.None;
  88. }
  89. }
  90. }