using UnityEngine; using System.Collections; public class Zoom2D : Move { #region 变量 public float Delta; public float Timer; public float Origin; public float Duration; public float Destination; public Vector3 OriginVec; public Camera Camera; public Transform Target; public CurveFunctionF Func; #endregion public Zoom2D(Camera camera) { Camera = camera; } public override bool Do() { Timer += Time.fixedDeltaTime; if (Timer > Duration) { Timer = 0; Camera.orthographicSize = Destination; ManaAnim.MoveList.Remove(this); return true; } else { Camera.orthographicSize = Func(Timer, Duration, Origin, Delta); return false; } } public void StartZoom(float origin, float destination, float duration, float stay, Transform target, Curve curve) { OnForwardStart.SafeInvoke(); Origin = origin; Target = target; Duration = duration; Destination = destination; Func = ManaAnim.CurveFuncDicF[curve]; Delta = destination - origin; OriginVec = Camera.transform.position; ManaAnim.MoveList.Remove(this); ManaAnim.MoveList.Add(this); Move move = Camera.Move2D(Target.position, duration, false, curve); move.AddEventOnetime ( EventType.ForwardFinish, () => { Auxiliary.Instance.DelayCall ( () => { Delta = origin - destination; Origin = destination; Destination = origin; ManaAnim.MoveList.Add(this); Move tempMove = Camera.Move2D(OriginVec, duration, false, curve); tempMove.AddEventOnetime ( EventType.ForwardFinish, () => { OnForwardFinish.SafeInvoke(); } ); }, stay ); } ); } }