CombatHeroRollingState.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  3. using CombatLibrary.CombatLibrary.CombatCore.Utility;
  4. using Fort23.UTool;
  5. using Unity.AI.Navigation;
  6. using UnityEngine;
  7. using UnityEngine.AI;
  8. namespace GameLogic.Combat.Hero.State
  9. {
  10. public class CombatHeroRollingState : CombatHeroStateBasic
  11. {
  12. protected float speed = 3;
  13. protected float dis = 2;
  14. private float _currTime;
  15. private Vector3 targetPos;
  16. private Vector3 startPos;
  17. protected ACurve ACurve;
  18. public CombatHeroRollingState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  19. {
  20. }
  21. protected override void ProEnter()
  22. {
  23. combatHeroEntity.combatHeroAnimtion.Play("idle");
  24. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  25. combatHeroEntity.combatHeroTimeLineControl.TimeLineData
  26. .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>("fangun1", null);
  27. try
  28. {
  29. timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null);
  30. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup);
  31. }
  32. catch (Exception e)
  33. {
  34. LogTool.Error(e);
  35. }
  36. ACurve= combatHeroEntity.combatHeroTimeLineControl.TimeLineData.GetTimeLineEventACurve("fangun1", "fangun", null);
  37. startPos = combatHeroEntity.dotPos;
  38. targetPos = startPos + combatHeroEntity.combatHeroGameObject.rotation * new Vector3(0, 0, -dis);
  39. _currTime = 0;
  40. }
  41. protected override void ProUpdate(float t)
  42. {
  43. _currTime += t * speed;
  44. Vector3 moveToTarget = Vector3.Lerp(startPos, targetPos, ACurve.Evaluate(_currTime));
  45. combatHeroEntity.CombatAIBasic.NavMeshAgent.Raycast(moveToTarget, out NavMeshHit hit);
  46. if (!hit.hit)
  47. {
  48. combatHeroEntity.combatHeroGameObject.SetPosition(moveToTarget);
  49. }
  50. if (_currTime >= 1)
  51. {
  52. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  53. return;
  54. }
  55. }
  56. }
  57. }