FigterStateNavRun.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using UnityEngine;
  2. using System.Collections;
  3. public class FigterStateNavRun : FighterState
  4. {
  5. public static FighterState Creator(Fighter fighter)
  6. {
  7. return new FigterStateNavRun(fighter);
  8. }
  9. public FigterStateNavRun(Fighter fighter)
  10. : base(fighter, FighterStateType.NavRun)
  11. {
  12. mAnimName = FighterAnimatorHash.StateWalk;
  13. }
  14. public override void OnEnter(FighterStateType fromState, object param)
  15. {
  16. //DebugHelper.LogError("------FigterStateNavRun----:"+mFighter.DestPosition);
  17. mFighter.RunToWithNav(mFighter.DestPosition);
  18. if(!string.IsNullOrEmpty(mFighter.RunSound))
  19. {
  20. MusicMgr.Instance.PlayFightSound(mFighter.RunSound,true);
  21. }
  22. }
  23. public override void Update(float deltaTime)
  24. {
  25. //DebugHelper.LogError("name:" + mFighter.Name+" pos:"+mFighter.Position.ToString()+" destPos:"+mFighter.DestPosition.ToString());
  26. if (mFighter.Position.x.FEqual(mFighter.DestPosition.x, 0.5f) && mFighter.Position.z.FEqual(mFighter.DestPosition.z, 0.5f) && mFighter.Position.y.FEqual(mFighter.DestPosition.y, 0.5f))
  27. {
  28. mFighter.SetPosition(mFighter.DestPosition);
  29. mFighter.LookAt(mFighter.DestPosition);
  30. mStateData.ChangeState(mStateData.GetIdleNext());
  31. }else
  32. {
  33. if(!mFighter.Ctrl.NavAgentEnabled && !BattleMgr.Instance.IsLoadingBattleAssets)
  34. {
  35. mFighter.Ctrl.EnableNavAgent(true);
  36. }
  37. }
  38. }
  39. public override void OnLeave()
  40. {
  41. base.OnLeave();
  42. mFighter.Ctrl.EnableNavAgent(false);
  43. EventMgr.DispatchEvent<int>(new CoreEvent<int>(ECoreEventType.EID_Fighter_Move_End, mFighter.Actor.BaseId));
  44. if (!string.IsNullOrEmpty(mFighter.RunSound))
  45. {
  46. MusicMgr.Instance.RemoveSound(mFighter.RunSound);
  47. }
  48. }
  49. public override void OnDataChanged()
  50. {
  51. if (!mStateData.IsAlive)
  52. mStateData.ChangeState(FighterStateType.Die);
  53. else if (mStateData.IsVertigo)
  54. mStateData.ChangeState(FighterStateType.Vertigo);
  55. else if (mStateData.IsSleep)
  56. mStateData.ChangeState(FighterStateType.Sleep);
  57. else if (mStateData.IsStark)
  58. mStateData.ChangeState(FighterStateType.Stark);
  59. }
  60. public override FighterStateType GetTriggerNextState(FighterStateTriggerType triggerType, int checkVal = 0)
  61. {
  62. switch (triggerType)
  63. {
  64. case FighterStateTriggerType.BeHit:
  65. if (checkVal > 0)
  66. return FighterStateType.BeHit;
  67. else
  68. return FighterStateType.None;
  69. case FighterStateTriggerType.Run:
  70. return FighterStateType.Run;
  71. case FighterStateTriggerType.NavRun:
  72. return FighterStateType.NavRun;
  73. default:
  74. return FighterStateType.None;
  75. }
  76. }
  77. }