FMoveEvent.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.Security;
  5. namespace Flux
  6. {
  7. [FEvent("Skill/移动效果/移动")]
  8. public class FMoveEvent : FEvent
  9. {
  10. [HideInInspector]
  11. [SerializeField]
  12. private int _moveType = 0;
  13. public int MoveType
  14. {
  15. get { return _moveType; }
  16. }
  17. [HideInInspector]
  18. [SerializeField]
  19. private float _initSpeed = 0;
  20. public float InitSpeed
  21. {
  22. get
  23. {
  24. return _initSpeed;
  25. }
  26. }
  27. [HideInInspector]
  28. [SerializeField]
  29. private float _acceleration = 0;
  30. public float Acceleration
  31. {
  32. get { return _acceleration; }
  33. }
  34. [HideInInspector]
  35. [SerializeField]
  36. private float _moveDistance = 0;
  37. public float MoveDistance
  38. {
  39. get { return _moveDistance; }
  40. }
  41. [HideInInspector]
  42. [SerializeField]
  43. private int _moveOrientation = 0;
  44. public int MoveOrientation
  45. {
  46. get { return _moveOrientation; }
  47. }
  48. private Vector3 _lastPos;
  49. private MoveProcessor _moveProcessor;
  50. private float _previousTimeSinceTrigger = 0;
  51. private float _previousSpeed = 0;
  52. private Vector3 _destPos;
  53. public FMoveEvent()
  54. {
  55. _eventType = SkillActionFrameEventType.FE_Move;
  56. }
  57. protected override void OnSetDefaultValues()
  58. {
  59. base.OnSetDefaultValues();
  60. }
  61. protected override void OnTrigger(float timeSinceTrigger)
  62. {
  63. if (_casterTrans != null)
  64. {
  65. _lastPos = _casterTrans.position;
  66. _moveProcessor = new MoveProcessor(_casterTrans);
  67. if (_moveType == (int)FighterMoveType.Jump)
  68. {
  69. _destPos = _casterTrans.position + Vector3.up * _moveDistance;
  70. }
  71. else if (_moveType == (int)FighterMoveType.Sprint_Target)
  72. {
  73. if (_targetTrans != null)
  74. _destPos = _targetTrans.position + _targetTrans.forward * _moveDistance;
  75. }
  76. else if (_moveType == (int)FighterMoveType.Sprint_Position)
  77. {
  78. Vector3 eulerAngle = _casterTrans.rotation.eulerAngles;
  79. eulerAngle.y += _moveOrientation;
  80. _casterTrans.rotation = Quaternion.Euler(eulerAngle);
  81. _destPos = _casterTrans.position + _casterTrans.forward * _moveDistance;
  82. }
  83. }
  84. if (_moveProcessor != null)
  85. {
  86. _moveProcessor.Start(_initSpeed,_acceleration, _destPos);
  87. _previousTimeSinceTrigger = timeSinceTrigger;
  88. }
  89. }
  90. protected override void OnPause()
  91. {
  92. base.OnPause();
  93. }
  94. protected override void OnResume()
  95. {
  96. base.OnResume();
  97. }
  98. protected override void OnFinish()
  99. {
  100. base.OnFinish();
  101. }
  102. protected override void OnStop()
  103. {
  104. base.OnStop();
  105. if(_casterTrans!=null)
  106. {
  107. _casterTrans.position = _lastPos;
  108. }
  109. }
  110. protected override void OnUpdateEvent(float timeSinceTrigger)
  111. {
  112. float delta = timeSinceTrigger - _previousTimeSinceTrigger;
  113. _previousTimeSinceTrigger = timeSinceTrigger;
  114. if(_moveProcessor!=null)
  115. {
  116. _moveProcessor.Update(delta);
  117. }
  118. }
  119. public override int GetMaxLength()
  120. {
  121. return base.GetMaxLength();
  122. }
  123. public override string Text
  124. {
  125. get { return "移动"; }
  126. set { }
  127. }
  128. public override SecurityElement SaveToXml()
  129. {
  130. SecurityElement node = base.SaveToXml();
  131. SecurityElement paramNode = WriteParamNode("moveType", _moveType.ToString(),"int");
  132. node.AddChild(paramNode);
  133. paramNode = WriteParamNode("initSpeed", ((int)(_initSpeed * 100)).ToString(), "int");
  134. node.AddChild(paramNode);
  135. paramNode = WriteParamNode("acceleration", ((int)(_acceleration * 100)).ToString(), "int");
  136. node.AddChild(paramNode);
  137. paramNode = WriteParamNode("moveDist", ((int)(_moveDistance * 100)).ToString(), "int");
  138. node.AddChild(paramNode);
  139. paramNode = WriteParamNode("moveOrientation", _moveOrientation.ToString(), "int");
  140. node.AddChild(paramNode);
  141. return node;
  142. }
  143. public override void LoadFromXml(SecurityElement eventNode)
  144. {
  145. base.LoadFromXml(eventNode);
  146. _moveType = GetNParam("moveType");
  147. _initSpeed = GetNParam("initSpeed") * 0.01f;
  148. _acceleration = GetNParam("acceleration") * 0.01f;
  149. _moveDistance = GetNParam("moveDist") * 0.01f;
  150. _moveOrientation = GetNParam("moveOrientation");
  151. }
  152. }
  153. }