TweenVector.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. public class TweenVector : Tween
  5. {
  6. #region
  7. protected Vector3 Delta;
  8. protected Vector3 Origin;
  9. protected Vector3 Destination;
  10. protected Transform Target;
  11. protected CanvasGroup CanvasGroup;
  12. protected CurveFunctionV Func;
  13. #endregion
  14. public TweenVector(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve)
  15. {
  16. Target = target;
  17. Duration = duration;
  18. DestActive = destActive;
  19. OriginActive = originActive;
  20. Delta = destination - origin;
  21. Origin = origin;
  22. Destination = destination;
  23. CanvasGroup = Target.GetComponent<CanvasGroup>();
  24. OnForwardStart += () =>
  25. {
  26. Target.SetActive(true);
  27. if (CanvasGroup != null)
  28. {
  29. CanvasGroup.interactable = false;
  30. }
  31. };
  32. OnForwardFinish += () =>
  33. {
  34. Target.SetActive(DestActive);
  35. if (CanvasGroup != null)
  36. {
  37. CanvasGroup.interactable = DestActive;
  38. }
  39. };
  40. OnBackwardStart += () =>
  41. {
  42. Target.SetActive(true);
  43. if (CanvasGroup != null)
  44. {
  45. CanvasGroup.interactable = false;
  46. }
  47. };
  48. OnBackwardFinish += () =>
  49. {
  50. Target.SetActive(OriginActive);
  51. if (CanvasGroup != null)
  52. {
  53. CanvasGroup.interactable = OriginActive;
  54. }
  55. };
  56. Func = ManaAnim.FunctionDicV[curve];
  57. }
  58. public override bool DoForward()
  59. {
  60. if (Timer > Duration)
  61. {
  62. Target.position = Destination;
  63. Timer = 0;
  64. IsForwardFinish = true;
  65. OnForwardFinish.Invoke();
  66. ManaAnim.ForwardList.Remove(this);
  67. return true;
  68. }
  69. else
  70. {
  71. Target.position = Func(Timer, Duration, Origin, Delta);
  72. Timer += Time.fixedDeltaTime;
  73. return false;
  74. }
  75. }
  76. public override bool DoBackward()
  77. {
  78. if (Timer > Duration)
  79. {
  80. Target.position = Origin;
  81. Timer = 0;
  82. IsBackwardFinish = true;
  83. OnBackwardFinish.Invoke();
  84. ManaAnim.BackwardList.Remove(this);
  85. return true;
  86. }
  87. else
  88. {
  89. Target.position = Func(Timer, Duration, Destination, -Delta);
  90. Timer += Time.fixedDeltaTime;
  91. return false;
  92. }
  93. }
  94. }