XiaoShiAndShow.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using UnityEngine;
  3. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic;
  4. namespace GameLogic.Combat.Skill.MagicSkill
  5. {
  6. public class XiaoShiAndShow : MagicAttShowBasic
  7. {
  8. private Vector3 currSize;
  9. private Vector3 targetSize;
  10. private Vector3 currPos;
  11. private Vector3 targetPos;
  12. private float currTime;
  13. private float moveSpeed = 3;
  14. protected bool isUpdateMove;
  15. protected float showSizeTime;
  16. protected override void ProInit()
  17. {
  18. }
  19. protected override void ProSetInfo()
  20. {
  21. isUpdateMove = false;
  22. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic =
  23. _skillBasic.ActivationTimeLineData("sk1_xiaoshi");
  24. timeLineEventLogicGroupBasic.TimeLineUpdateEnd = XiaoShiFinish;
  25. }
  26. private void XiaoShiFinish()
  27. {
  28. TimeLineMagicWeaponShowPointSerializtion timeLineMagicWeaponShowPointSerializtion = CombatHeroEntity
  29. .combatHeroTimeLineControl
  30. .GetTimeLineEventInfo<TimeLineMagicWeaponShowPointSerializtion>("sk1_show");
  31. if (timeLineMagicWeaponShowPointSerializtion != null)
  32. {
  33. switch (timeLineMagicWeaponShowPointSerializtion.showPointType)
  34. {
  35. case TimeLineMagicWeaponShowPointSerializtion.ShowPointType.Head:
  36. Vector3 headPos = target.dotPos + new Vector3(0, 5, 0);
  37. CombatHeroEntity.combatHeroGameObject.SetPosition(headPos);
  38. break;
  39. case TimeLineMagicWeaponShowPointSerializtion.ShowPointType.Customize:
  40. SpecialDotInfo specialDotInfo =
  41. target.GetSpecialDotInfo(timeLineMagicWeaponShowPointSerializtion.customizePointName);
  42. CombatHeroEntity.combatHeroGameObject.SetPosition(specialDotInfo.GetWorlPos());
  43. break;
  44. }
  45. }
  46. else
  47. {
  48. Vector3 headPos = target.dotPos + new Vector3(0, 5, 0);
  49. CombatHeroEntity.combatHeroGameObject.SetPosition(headPos);
  50. }
  51. CombatHeroEntity.combatHeroGameObject.SetScale(new Vector3(3, 3, 3));
  52. CombatHeroEntity.GameObject.transform.eulerAngles =
  53. new Vector3(0, target.GameObject.transform.eulerAngles.y + 180, 0);
  54. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic =
  55. _skillBasic.ActivationTimeLineData("sk1_show");
  56. timeLineEventLogicGroupBasic.TimeLineUpdateEnd = ShowFinish;
  57. }
  58. private void ShowFinish()
  59. {
  60. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic =
  61. _skillBasic.ActivationTimeLineData("sk1");
  62. if (timeLineEventLogicGroupBasic != null) //有表现.播表现,不需要位移
  63. {
  64. timeLineEventLogicGroupBasic.TimeLineUpdateEnd = AllFinish;
  65. }
  66. else //位移
  67. {
  68. showSizeTime = 0;
  69. currSize = Vector3.one;
  70. targetSize = Vector3.one * 2f;
  71. currPos = CombatHeroEntity.dotPos;
  72. targetPos = target.dotPos;
  73. currTime = 0;
  74. isUpdateMove = true;
  75. }
  76. }
  77. private void AllFinish()
  78. {
  79. TimeLineEventLogicGroupBasic timeLineEventLogicGroupBasic =
  80. _skillBasic.ActivationTimeLineData("sk1_hit");
  81. callBack?.Invoke();
  82. }
  83. protected override void ProUpdate(float t)
  84. {
  85. if (!isUpdateMove)
  86. {
  87. return;
  88. }
  89. currTime += t * moveSpeed;
  90. // Vector3 size = Vector3.Lerp(currSize, targetSize, currTime);
  91. Vector3 pos = Vector3.Lerp(currPos, targetPos, currTime);
  92. CombatHeroEntity.combatHeroGameObject.SetPosition(pos);
  93. // CombatHeroEntity.combatHeroGameObject.SetScale(size);
  94. if (currTime > 1)
  95. {
  96. isUpdateMove = false;
  97. AllFinish();
  98. }
  99. }
  100. }
  101. }