MagicWeaponChuChangState.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using GameLogic.Combat.CombatTool;
  3. using UnityEngine;
  4. namespace GameLogic.Combat.Hero.State
  5. {
  6. public class MagicWeaponChuChangState : CombatHeroStateBasic
  7. {
  8. private CombatMagicWeaponEntity myCombatMagicWeaponEntity;
  9. private Vector3 startPos;
  10. private Vector3 endPos;
  11. private float _addTime;
  12. private float _currTime;
  13. private TimeLineEventLogicGroupBasic timeLineEventLogicGroup;
  14. private bool isUpdate;
  15. public MagicWeaponChuChangState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  16. {
  17. myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity;
  18. }
  19. protected override void ProEnter()
  20. {
  21. timeLineEventLogicGroup =
  22. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("jihuo");
  23. myCombatMagicWeaponEntity.GameObject.transform.eulerAngles = Vector3.zero;
  24. myCombatMagicWeaponEntity.GameObject.SetActive(true);
  25. startPos = myCombatMagicWeaponEntity.MagicWeaponControl.combatHeroEntity.dotPos;
  26. float y = myCombatMagicWeaponEntity.IsEnemy ? 7 : 5;
  27. float x = myCombatMagicWeaponEntity.useIndex*1.5f;
  28. endPos = startPos + new Vector3(x-3, y, 0);
  29. _addTime = 1.0f / (Vector3.Distance(startPos, endPos) / 6);
  30. _currTime = 0;
  31. isUpdate = true;
  32. }
  33. protected override void ProUpdate(float t)
  34. {
  35. if (!isUpdate)
  36. {
  37. return;
  38. }
  39. _currTime += t * _addTime;
  40. Vector3 pos = Vector3.Lerp(startPos, endPos, _currTime);
  41. myCombatMagicWeaponEntity.combatHeroGameObject.SetPosition(pos);
  42. if (_currTime >= 1)
  43. {
  44. isUpdate = false;
  45. if (timeLineEventLogicGroup != null)
  46. {
  47. timeLineEventLogicGroup.CloseLoopFx();
  48. }
  49. // myCombatMagicWeaponEntity.GameObject.SetActive(true);
  50. timeLineEventLogicGroup =
  51. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("show");
  52. if (timeLineEventLogicGroup != null)
  53. {
  54. timeLineEventLogicGroup.TimeLineUpdateEnd = delegate()
  55. {
  56. timeLineEventLogicGroup.CloseLoopFx();
  57. myCombatMagicWeaponEntity.isCombatState = true;
  58. myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  59. };
  60. }
  61. else
  62. {
  63. myCombatMagicWeaponEntity.isCombatState = true;
  64. myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  65. }
  66. }
  67. }
  68. protected override void ProExit()
  69. {
  70. }
  71. public override bool IsUpdateLockTarget()
  72. {
  73. return false;
  74. }
  75. protected override void ProDispose()
  76. {
  77. }
  78. }
  79. }