Zoom2D.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using UnityEngine;
  2. using System.Collections;
  3. public class Zoom2D : Move
  4. {
  5. #region 变量
  6. public float Delta;
  7. public float Timer;
  8. public float Origin;
  9. public float Duration;
  10. public float Destination;
  11. public Vector3 OriginVec;
  12. public Camera Camera;
  13. public Transform Target;
  14. public CurveFunctionF Func;
  15. #endregion
  16. public Zoom2D(Camera camera)
  17. {
  18. Camera = camera;
  19. }
  20. public override bool Do()
  21. {
  22. Timer += Time.fixedDeltaTime;
  23. if (Timer > Duration)
  24. {
  25. Timer = 0;
  26. Camera.orthographicSize = Destination;
  27. ManaAnim.MoveList.Remove(this);
  28. return true;
  29. }
  30. else
  31. {
  32. Camera.orthographicSize = Func(Timer, Duration, Origin, Delta);
  33. return false;
  34. }
  35. }
  36. public void StartZoom(float origin, float destination, float duration, float stay, Transform target, Curve curve)
  37. {
  38. Origin = origin;
  39. Target = target;
  40. Duration = duration;
  41. Destination = destination;
  42. Func = ManaAnim.CurveFuncDicF[curve];
  43. Delta = destination - origin;
  44. OriginVec = Camera.transform.position;
  45. ManaAnim.MoveList.Remove(this);
  46. ManaAnim.MoveList.Add(this);
  47. Move move = Camera.Move2D(Target.position, duration, false, curve);
  48. move.OnForwardFinish = () =>
  49. {
  50. Auxiliary.Instance.DelayCall
  51. (
  52. () =>
  53. {
  54. Delta = origin - destination;
  55. Origin = destination;
  56. Destination = origin;
  57. ManaAnim.MoveList.Add(this);
  58. Camera.Move2D(OriginVec, duration, false, curve);
  59. },
  60. stay
  61. );
  62. };
  63. }
  64. }