CombatHeroRollingState.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  3. using CombatLibrary.CombatLibrary.CombatCore.Utility;
  4. using Core.State;
  5. using Fort23.Core;
  6. using UnityEngine;
  7. using UnityEngine.AI;
  8. namespace GameLogic.Combat.Hero.State
  9. {
  10. public class CombatHeroRollingState : CombatHeroStateBasic
  11. {
  12. public class RollingStateData : CObject, IStateEnterData
  13. {
  14. public Vector3 dir;
  15. public override void ActiveObj()
  16. {
  17. }
  18. public override void DormancyObj()
  19. {
  20. }
  21. }
  22. protected float speed = 1.3f;
  23. protected float dis = 3;
  24. private float _currTime;
  25. private Vector3 targetPos;
  26. private Vector3 startPos;
  27. protected ACurve ACurve;
  28. private RollingStateData _rollingStateData;
  29. public CombatHeroRollingState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  30. {
  31. }
  32. public override bool IsUpdateLockTarget()
  33. {
  34. return false;
  35. }
  36. protected override void ProEnter()
  37. {
  38. _rollingStateData = iStateEnterData as RollingStateData;
  39. combatHeroEntity.combatHeroAnimtion.Play("idle");
  40. // TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  41. // combatHeroEntity.combatHeroTimeLineControl.TimeLineData
  42. // .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>("fangun1", null);
  43. // try
  44. // {
  45. // timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null);
  46. // timeLineEventLogicGroup.TimeLineUpdateEnd = delegate { };
  47. // combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup);
  48. // }
  49. // catch (Exception e)
  50. // {
  51. // LogTool.Error(e);
  52. // }
  53. // ACurve = combatHeroEntity.combatHeroTimeLineControl.TimeLineData.GetTimeLineEventACurve("fangun1", "fangun",
  54. // null);
  55. Vector3 dir = combatHeroEntity.faceDir;
  56. if (_rollingStateData != null)
  57. {
  58. dir = _rollingStateData.dir;
  59. }
  60. combatHeroEntity.GameObject.transform.rotation.SetLookRotation(dir);
  61. startPos = combatHeroEntity.dotPos;
  62. targetPos = startPos + dir * -dis;
  63. _currTime = 0;
  64. }
  65. protected override void ProExit()
  66. {
  67. CObjectPool.Instance.Recycle(_rollingStateData);
  68. _rollingStateData = null;
  69. }
  70. protected override void ProUpdate(float t)
  71. {
  72. _currTime += t * speed;
  73. Vector3 moveToTarget = Vector3.Lerp(startPos, targetPos, ACurve.Evaluate(_currTime));
  74. }
  75. }
  76. }