123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using UnityEngine;
- using UnityEngine.Events;
- using System;
- using System.Collections;
- public class MoveVec : Move
- {
- #region 变量
- protected float Timer;
- protected float Duration;
- protected Vector3 Delta;
- protected Vector3 Origin;
- protected Vector3 Destination;
- protected Transform Target;
- protected CurveFunctionV Func;
- #endregion
- public MoveVec(Transform target)
- {
- Target = target;
- }
- public override bool DoMove()
- {
- Timer += Time.fixedDeltaTime;
- if (Timer > Duration)
- {
- Target.position = Destination;
- Timer = 0;
- ManaAnim.MoveList.Remove(this);
- if (OnFinish != null)
- {
- OnFinish.Invoke();
- }
- return true;
- }
- else
- {
- Target.position = Func(Timer, Duration, Origin, Delta);
- return false;
- }
- }
- public void StartMove(Vector3 destination, float duration, Curve curve)
- {
- Finish = false;
- destination.z = Target.position.z;
- Delta = destination - Target.position;
- Origin = Target.position;
- Duration = duration;
- Destination = destination;
- Func = ManaAnim.FunctionDicV[curve];
- if (OnStart != null)
- {
- OnStart.Invoke();
- }
- ManaAnim.MoveList.Remove(this);
- ManaAnim.MoveList.Add(this);
- }
- }
|