Tween 动画类




使用

示例用法 (将此脚本附加到一个游戏物体):

Tween 动画类_第1张图片

数组,它将显示您的对象,如 Positions/Rotations/Alphas有 5 的参数,这种工作方式:

Total Time:此操作将需要多长时间。

Delay:此操作将等多久才能启动。(如果此操作有一个或多个操作在它之前,你可能想添加所用总的时间)

Ease:你想要对此"tween"什么样的行为呢

Tween Value:最后Translation/Rotation/Alpha 的元素。

Loop Array:将它循环吗?


UnityTween.cs  (多次使用了foreach在实际使用应该改为for)

using UnityEngine;
using System.Collections;

//Tween position object class
[System.Serializable]
public class TweenPositionObject : BaseTweenObject
{
	public Vector3 tweenValue;
	
	private Vector3 _startValue;
	public Vector3 startValue
	{
		set{_startValue = value;}
		get{return _startValue;}
	}
	
	public TweenPositionObject ()
	{
		this.tweenType = TweenType.TweenPosition;
	}	
}

//Tween rotation object class
[System.Serializable]
public class TweenRotationObject : BaseTweenObject
{
	public Vector3 tweenValue;
	
	private Vector3 _startValue;
	public Vector3 startValue
	{
		set{_startValue = value;}
		get{return _startValue;}
	}
	
	public TweenRotationObject ()
	{
		this.tweenType = TweenType.TweenRotation;
	}	
}

//Tween Alpha object class
[System.Serializable]
public class TweenAlphaObject : BaseTweenObject
{
	public float tweenValue;
	
	private float _startValue;
	public float startValue
	{
		set{_startValue = value;}
		get{return _startValue;}
	}
	
	public TweenAlphaObject ()
	{
		this.tweenType = TweenType.TweenAlpha;
	}	
}



//Engine class
public class UnityTween : MonoBehaviour {
	
	
	public TweenPositionObject[] positions =  new TweenPositionObject[0];
	public TweenRotationObject[] rotations =  new TweenRotationObject[0];
	public TweenAlphaObject[] alphas =  new TweenAlphaObject[0];
	
	public bool loopArray;
	
	private ArrayList tweens;
	
	
	void Start () {
		
		this.tweens = new ArrayList();
		this.AddTweens();
	}
	
	private void AddTweens ()
	{
		foreach(TweenPositionObject tween in positions)
		{
			TweenPosition(tween);
		}
		foreach(TweenRotationObject tween in rotations)
		{
			TweenRotation(tween);
		}
		foreach(TweenAlphaObject tween in alphas)
		{
			TweenAlpha(tween);
		}
	}
	//Add Tween in arrayList
	//Tween position
	public void TweenPosition (TweenPositionObject obj)
	{
		TweenPositionObject tween = new TweenPositionObject();
		
		tween.startTime = Time.time;
		tween.CopyTween(obj);
		tween.tweenValue = obj.tweenValue;
		tween.Init();
		
		this.tweens.Add(tween);
	}
	//Tween rotation
	public void TweenRotation (TweenRotationObject obj)
	{
		TweenRotationObject tween = new TweenRotationObject();
		
		tween.startTime = Time.time;
		tween.CopyTween(obj);
		tween.tweenValue = obj.tweenValue;
		tween.Init();
		
		this.tweens.Add(tween);
	}
	//Tween alpha
	public void TweenAlpha (TweenAlphaObject obj)
	{
		TweenAlphaObject tween = new TweenAlphaObject();
		
		tween.startTime = Time.time;
		tween.CopyTween(obj);
		tween.tweenValue = obj.tweenValue;
		tween.Init();
		
		this.tweens.Add(tween);
	}
	
	//Clear Tweens with the same type
	private void ClearTweensSameType (BaseTweenObject obj)
	{
		foreach (BaseTweenObject tween in tweens)
		{
			if(tween.id != obj.id && tween.tweenType == obj.tweenType)
				tween.ended = true;
		}
	}
	
	//Updates
	void Update ()
	{
		this.DetectDelay();
		this.UpdateTween();
	}
	//Detect when delay was passed
	private void DetectDelay ()
	{
		foreach (BaseTweenObject tween in tweens)
		{
			if(Time.time > tween.startTime + tween.delay && !tween.canStart)
			{
				if(tween.tweenType == TweenType.TweenPosition)
				{
					TweenPositionObject tweenPos = tween as TweenPositionObject;
					tweenPos.startValue = this.transform.position;
				}
				else if(tween.tweenType == TweenType.TweenRotation)
				{
					TweenRotationObject tweenRot = tween as TweenRotationObject;
					tweenRot.startValue = this.transform.rotation.eulerAngles;
				}
				else if(tween.tweenType == TweenType.TweenAlpha)
				{
					TweenAlphaObject tweenAlpha = tween as TweenAlphaObject;
					if(GetComponent<GUITexture>() != null)
						tweenAlpha.startValue = GetComponent<GUITexture>().color.a;
					else
						tweenAlpha.startValue = this.GetComponent<Renderer>().material.color.a;
				}
				
				this.ClearTweensSameType(tween);
				
				tween.canStart = true;
			}
		}
	}
	//Update tween by type
	private void UpdateTween ()
	{
		
		int tweenCompleted = 0;
		foreach (BaseTweenObject tween in tweens)
		{
			if(tween.canStart && !tween.ended)
			{
				if(tween.tweenType == TweenType.TweenPosition)
					UpdatePosition(tween as TweenPositionObject);
				else if(tween.tweenType == TweenType.TweenRotation)
					UpdateRotation(tween as TweenRotationObject);
				else if(tween.tweenType == TweenType.TweenAlpha)
					UpdateAlpha(tween as TweenAlphaObject);	
				
			}
			if(tween.ended)
				tweenCompleted++;
			
			if(tweenCompleted == tweens.Count && loopArray)
				this.MakeLoop ();
			
			
		}
	}
	
	private void MakeLoop ()
	{
		foreach (BaseTweenObject tween in tweens)
		{
			tween.ended = false;
			tween.canStart = false;
			tween.startTime = Time.time;			
		}
	}
	
	
	
	//Update Position
	private void UpdatePosition(TweenPositionObject tween)
	{
		Vector3 begin = tween.startValue;
		Vector3 finish =  tween.tweenValue; 
		Vector3 change =  finish - begin;
		float duration = tween.totalTime; 
		float currentTime = Time.time - (tween.startTime + tween.delay);	
		
		if(duration == 0)
		{
			this.EndTween(tween);
			this.transform.position = finish;
			return;
		}
		
		
		if(Time.time  > tween.startTime + tween.delay + duration)
			this.EndTween(tween);
		
		this.transform.position = Equations.ChangeVector(currentTime, begin, change ,duration, tween.ease);
	}
	//Update Rotation
	private void UpdateRotation(TweenRotationObject tween)
	{
		Vector3 begin = tween.startValue;
		Vector3 finish =  tween.tweenValue; 
		Vector3 change =  finish - begin;
		float duration = tween.totalTime; 
		float currentTime = Time.time - (tween.startTime + tween.delay);	
		
		if(duration == 0)
		{
			this.EndTween(tween);
			this.transform.position = finish;
			return;
		}
		
		
		if(Time.time  > tween.startTime + tween.delay + duration)
			this.EndTween(tween);
		
		this.transform.rotation = Quaternion.Euler(Equations.ChangeVector(currentTime, begin, change ,duration, tween.ease));
	}
	//Update Alpha
	private void UpdateAlpha(TweenAlphaObject tween)
	{
		float begin = tween.startValue;
		float finish =  tween.tweenValue; 
		float change =  finish - begin;
		float duration = tween.totalTime; 
		float currentTime = Time.time - (tween.startTime + tween.delay);	
		
		float alpha = Equations.ChangeFloat(currentTime, begin, change ,duration, tween.ease);
		float redColor;
		float redGreen;
		float redBlue;
		
		if(GetComponent<GUITexture>() != null)
		{
			redColor = GetComponent<GUITexture>().color.r;
			redGreen = GetComponent<GUITexture>().color.g;
			redBlue = GetComponent<GUITexture>().color.b;
			
			GetComponent<GUITexture>().color = new Color(redColor,redGreen,redBlue,alpha);
			
			if(duration == 0)
			{
				this.EndTween(tween);
				GetComponent<GUITexture>().color = new Color(redColor,redGreen,redBlue,finish);
				return;
			}
		}
		else
		{
			redColor = this.GetComponent<Renderer>().material.color.r;
			redGreen = this.GetComponent<Renderer>().material.color.g;
			redBlue = this.GetComponent<Renderer>().material.color.b;
			
			this.GetComponent<Renderer>().material.color = new Color(redColor,redGreen,redBlue,alpha);
			
			if(duration == 0)
			{
				this.EndTween(tween);
				this.GetComponent<Renderer>().material.color = new Color(redColor,redGreen,redBlue,finish);
				return;
			}
		}
		
		if(Time.time  > tween.startTime + tween.delay + duration)
			this.EndTween(tween);
	}	
	
	private void EndTween (BaseTweenObject tween)
	{
		tween.ended = true;
	}
}

Tween.cs

using UnityEngine;
using System.Collections;


public enum Ease {
	Linear = 0,
	EaseInQuad = 1,
	EaseOutQuad = 2,
	EaseInOutQuad = 3,
	EaseOutInQuad = 4,
	EaseInCubic = 5,
	EaseOutCubic = 6,
	EaseInOutCubic = 7,
	EaseOutInCubic = 8,
	EaseInQuart = 9, 
	EaseOutQuart = 10,  
	EaseInOutQuart = 11,  
	EaseOutInQuart = 12,  
	EaseInQuint = 13,  
	EaseOutQuint = 14,  
	EaseInOutQuint = 15,  
	EaseOutInQuint = 16,
	EaseInSine = 17, 
	EaseOutSine = 18, 
	EaseInOutSine = 19, 
	EaseOutInSine = 20, 
	EaseInExpo = 21,  
	EaseOutExpo = 22,  
	EaseInOutExpo = 23,  
	EaseOutInExpo = 24,
	EaseInCirc = 25,  
	EaseOutCirc = 26,  
	EaseInOutCirc = 27,  
	EaseOutInCirc = 28,  
	EaseInElastic = 29,  
	EaseOutElastic = 30,  
	EaseInOutElastic = 31,  
	EaseOutInElastic = 32,
	EaseInBack = 33, 
	EaseOutBack = 34, 
	EaseInOutBack = 35, 
	EaseOutInBack = 36, 
	EaseInBounce = 37, 
	EaseOutBounce = 38, 
	EaseInOutBounce = 39,  
	EaseOutInBounce = 40
}

public class Equations {
	
	
	// TWEENING EQUATIONS floats -----------------------------------------------------------------------------------------------------
	// (the original equations are Robert Penner's work as mentioned on the disclaimer)
	
	/**
	 * Easing equation float for a simple linear tweening, with no easing.
	 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	
	public static float EaseNone (float t, float b, float c, float d) {
		return c * t / d + b;
	}
	
	/**
	 * Easing equation float for a quadratic (t^2) easing in: accelerating from zero velocity.
	 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseInQuad (float t, float b, float c, float d) {
		return c * (t/=d) * t + b;
	}
	
	/**
	 * Easing equation float for a quadratic (t^2) easing out: decelerating to zero velocity.
	 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseOutQuad (float t, float b, float c, float d) {
		return -c *(t/=d)*(t-2) + b;
	}
	
	/**
	 * Easing equation float for a quadratic (t^2) easing in/out: acceleration until halfway, then deceleration.
	 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseInOutQuad  (float t, float b, float c, float d) {
		
		if ((t/=d/2) < 1) return c/2*t*t + b;
		
		return -c/2 * ((--t)*(t-2) - 1) + b;
	}
	
	/**
	 * Easing equation float for a quadratic (t^2) easing out/in: deceleration until halfway, then acceleration.
	 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseOutInQuad (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutQuad (t*2, b, c/2, d);
		return EaseInQuad((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
	 * Easing equation float for a cubic (t^3) easing in: accelerating from zero velocity.
		 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseInCubic (float t, float b, float c, float d) {
		return c*(t/=d)*t*t + b;
	}
	
	/**
	 * Easing equation float for a cubic (t^3) easing out: decelerating from zero velocity.
		 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseOutCubic (float t, float b, float c, float d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	}
	
	/**
	 * Easing equation float for a cubic (t^3) easing in/out: acceleration until halfway, then deceleration.
		 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseInOutCubic (float t, float b, float c, float d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	}
	
	/**
	 * Easing equation float for a cubic (t^3) easing out/in: deceleration until halfway, then acceleration.
		 *
	 * @param t		Current time (in frames or seconds).
	 * @param b		Starting value.
	 * @param c		Change needed in value.
	 * @param d		Expected easing duration (in frames or seconds).
	 * @return		The correct value.
	 */
	public static float EaseOutInCubic (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutCubic (t*2, b, c/2, d);
		return EaseInCubic((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for a quartic (t^4) easing in: accelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInQuart (float t, float b, float c, float d) {
		return c*(t/=d)*t*t*t + b;
	}
	
	/**
		 * Easing equation float for a quartic (t^4) easing out: decelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutQuart (float t, float b, float c, float d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	}
	
	/**
		 * Easing equation float for a quartic (t^4) easing in/out: acceleration until halfway, then deceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInOutQuart (float t, float b, float c, float d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	}
	
	/**
		 * Easing equation float for a quartic (t^4) easing out/in: deceleration until halfway, then acceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutInQuart (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutQuart (t*2, b, c/2, d);
		return EaseInQuart((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for a quintic (t^5) easing in: accelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInQuint (float t, float b, float c, float d) {
		return c*(t/=d)*t*t*t*t + b;
	}
	
	/**
		 * Easing equation float for a quintic (t^5) easing out: decelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutQuint (float t, float b, float c, float d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	}
	
	/**
		 * Easing equation float for a quintic (t^5) easing in/out: acceleration until halfway, then deceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInOutQuint (float t, float b, float c, float d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	}
	
	/**
		 * Easing equation float for a quintic (t^5) easing out/in: deceleration until halfway, then acceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutInQuint (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutQuint (t*2, b, c/2, d);
		return EaseInQuint((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for a sinusoidal (sin(t)) easing in: accelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInSine (float t, float b, float c, float d) {
		return -c * Mathf.Cos(t/d * (Mathf.PI/2)) + c + b;
	}
	
	/**
		 * Easing equation float for a sinusoidal (sin(t)) easing out: decelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutSine (float t, float b, float c, float d) {
		return c * Mathf.Sin(t/d * (Mathf.PI/2)) + b;
	}
	
	/**
		 * Easing equation float for a sinusoidal (sin(t)) easing in/out: acceleration until halfway, then deceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInOutSine (float t, float b, float c, float d) {
		return -c/2 * (Mathf.Cos(Mathf.PI*t/d) - 1) + b;
	}
	
	/**
		 * Easing equation float for a sinusoidal (sin(t)) easing out/in: deceleration until halfway, then acceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutInSine (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutSine (t*2, b, c/2, d);
		return EaseInSine((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for an exponential (2^t) easing in: accelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInExpo (float t, float b, float c, float d) {
		return (t==0) ? b : c * Mathf.Pow(2, 10 * (t/d - 1)) + b - c * 0.001f;
	}
	
	/**
		 * Easing equation float for an exponential (2^t) easing out: decelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutExpo (float t, float b, float c, float d) {
		return (t==d) ? b+c : c * 1.001f * (-Mathf.Pow(2, -10 * t/d) + 1) + b;
	}
	
	/**
		 * Easing equation float for an exponential (2^t) easing in/out: acceleration until halfway, then deceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInOutExpo (float t, float b, float c, float d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Mathf.Pow(2, 10 * (t - 1)) + b - c * 0.0005f;
		return c/2 * 1.0005f * (-Mathf.Pow(2, -10 * --t) + 2) + b;
	}
	
	/**
		 * Easing equation float for an exponential (2^t) easing out/in: deceleration until halfway, then acceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutInExpo (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutExpo (t*2, b, c/2, d);
		return EaseInExpo((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for a circular (sqrt(1-t^2)) easing in: accelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInCirc (float t, float b, float c, float d) {
		return -c * (Mathf.Sqrt(1 - (t/=d)*t) - 1) + b;
	}
	
	/**
		 * Easing equation float for a circular (sqrt(1-t^2)) easing out: decelerating from zero velocity.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutCirc (float t, float b, float c, float d) {
		return c * Mathf.Sqrt(1 - (t=t/d-1)*t) + b;
	}
	
	/**
		 * Easing equation float for a circular (sqrt(1-t^2)) easing in/out: acceleration until halfway, then deceleration.
 		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInOutCirc (float t, float b, float c, float d) {
		if ((t/=d/2) < 1) return -c/2 * (Mathf.Sqrt(1 - t*t) - 1) + b;
		return c/2 * (Mathf.Sqrt(1 - (t-=2)*t) + 1) + b;
	}
	
	/**
		 * Easing equation float for a circular (sqrt(1-t^2)) easing out/in: deceleration until halfway, then acceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutInCirc (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutCirc (t*2, b, c/2, d);
		return EaseInCirc((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for an elastic (exponentially decaying sine wave) easing in: accelerating from zero velocity.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param a		Amplitude.
		 * @param p		Period.
		 * @return		The correct value.
		 */
	public static float EaseInElastic (float t, float b, float c, float d) {
		if (t==0) return b;
		if ((t/=d)==1) return b+c;
		float p =  d *.3f;
		float s = 0;
		float a = 0;
		if (a == 0f || a < Mathf.Abs(c)) {
			a = c;
			s = p/4;
		} else {
			s = p/(2*Mathf.PI) * Mathf.Asin (c/a);
		}
		return -(a*Mathf.Pow(2,10*(t-=1)) * Mathf.Sin( (t*d-s)*(2*Mathf.PI)/p )) + b;
	}
	
	/**
		 * Easing equation float for an elastic (exponentially decaying sine wave) easing out: decelerating from zero velocity.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param a		Amplitude.
		 * @param p		Period.
		 * @return		The correct value.
		 */
	public static float EaseOutElastic (float t, float b, float c, float d) {
		if (t==0) return b;
		if ((t/=d)==1) return b+c;
		float p = d*.3f;
		float s = 0;
		float a = 0;
		if (a == 0f || a < Mathf.Abs(c)) {
			a = c;
			s = p/4;
		} else {
			s = p/(2*Mathf.PI) * Mathf.Asin (c/a);
		}
		return (a*Mathf.Pow(2,-10*t) * Mathf.Sin( (t*d-s)*(2*Mathf.PI)/p ) + c + b);
	}
	
	/**
		 * Easing equation float for an elastic (exponentially decaying sine wave) easing in/out: acceleration until halfway, then deceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param a		Amplitude.
		 * @param p		Period.
		 * @return		The correct value.
		 */
	public static float EaseInOutElastic (float t, float b, float c, float d) {
		if (t==0) return b;
		if ((t/=d/2)==2) return b+c;
		float p =  d*(.3f*1.5f);
		float s = 0;
		float a = 0;
		if (a == 0f || a < Mathf.Abs(c)) {
			a = c;
			s = p/4;
		} else {
			s = p/(2*Mathf.PI) * Mathf.Asin (c/a);
		}
		if (t < 1) return -.5f*(a*Mathf.Pow(2,10*(t-=1)) * Mathf.Sin( (t*d-s)*(2*Mathf.PI)/p )) + b;
		return a*Mathf.Pow(2,-10*(t-=1)) * Mathf.Sin( (t*d-s)*(2*Mathf.PI)/p )*.5f + c + b;
	}
	
	/**
		 * Easing equation float for an elastic (exponentially decaying sine wave) easing out/in: deceleration until halfway, then acceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param a		Amplitude.
		 * @param p		Period.
		 * @return		The correct value.
		 */
	public static float EaseOutInElastic (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutElastic (t*2, b, c/2, d);
		return EaseInElastic((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in: accelerating from zero velocity.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param s		Overshoot ammount: higher s means greater overshoot (0 produces cubic easing with no overshoot, and the default value of 1.70158 produces an overshoot of 10 percent).
		 * @return		The correct value.
		 */
	public static float EaseInBack (float t, float b, float c, float d) {
		float s = 1.70158f;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	}
	
	/**
		 * Easing equation float for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out: decelerating from zero velocity.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param s		Overshoot ammount: higher s means greater overshoot (0 produces cubic easing with no overshoot, and the default value of 1.70158 produces an overshoot of 10 percent).
		 * @return		The correct value.
		 */
	public static float EaseOutBack (float t, float b, float c, float d) {
		float s = 1.70158f;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	}
	
	/**
		 * Easing equation float for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in/out: acceleration until halfway, then deceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param s		Overshoot ammount: higher s means greater overshoot (0 produces cubic easing with no overshoot, and the default value of 1.70158 produces an overshoot of 10 percent).
		 * @return		The correct value.
		 */
	public static float EaseInOutBack (float t, float b, float c, float d) {
		float s =  1.70158f;
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525f))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525f))+1)*t + s) + 2) + b;
	}
	
	/**
		 * Easing equation float for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out/in: deceleration until halfway, then acceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @param s		Overshoot ammount: higher s means greater overshoot (0 produces cubic easing with no overshoot, and the default value of 1.70158 produces an overshoot of 10 percent).
		 * @return		The correct value.
		 */
	public static float EaseOutInBack (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutBack (t*2, b, c/2, d);
		return EaseInBack((t*2)-d, b+c/2, c/2, d);
	}
	
	/**
		 * Easing equation float for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInBounce (float t, float b, float c, float d) {
		return c - EaseOutBounce (d-t, 0, c, d) + b;
	}
	
	/**
		 * Easing equation float for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutBounce (float t, float b, float c, float d) {
		if ((t/=d) < (1/2.75f)) {
			return c*(7.5625f*t*t) + b;
		} else if (t < (2/2.75f)) {
			return c*(7.5625f*(t-=(1.5f/2.75f))*t + .75f) + b;
		} else if (t < (2.5f/2.75f)) {
			return c*(7.5625f*(t-=(2.25f/2.75f))*t + .9375f) + b;
		} else {
			return c*(7.5625f*(t-=(2.625f/2.75f))*t + .984375f) + b;
		}
	}
	
	/**
		 * Easing equation float for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseInOutBounce (float t, float b, float c, float d) {
		if (t < d/2) return EaseInBounce (t*2, 0, c, d) * .5f + b;
		else return EaseOutBounce (t*2-d, 0, c, d) * .5f + c*.5f + b;
	}
	
	/**
		 * Easing equation float for a bounce (exponentially decaying parabolic bounce) easing out/in: deceleration until halfway, then acceleration.
		 *
		 * @param t		Current time (in frames or seconds).
		 * @param b		Starting value.
		 * @param c		Change needed in value.
		 * @param d		Expected easing duration (in frames or seconds).
		 * @return		The correct value.
		 */
	public static float EaseOutInBounce (float t, float b, float c, float d) {
		if (t < d/2) return EaseOutBounce (t*2, b, c/2, d);
		return EaseInBounce((t*2)-d, b+c/2, c/2, d);
	}
	
	
	
	public static Vector3 ChangeVector(float t , Vector3 b , Vector3 c , float d , Ease Ease)
	{
		float x = 0;
		float y = 0;
		float z = 0;
		
		if(Ease == Ease.Linear)
		{
			x = EaseNone (t , b.x , c.x , d);
			y = EaseNone (t , b.y , c.y , d);
			z = EaseNone (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInQuad)
		{
			x = EaseInQuad (t , b.x , c.x , d);
			y = EaseInQuad (t , b.y , c.y , d);
			z = EaseInQuad (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutQuad)
		{
			x = EaseOutQuad (t , b.x , c.x , d);
			y = EaseOutQuad (t , b.y , c.y , d);
			z = EaseOutQuad (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutQuad)
		{
			x = EaseInOutQuad (t , b.x , c.x , d);
			y = EaseInOutQuad (t , b.y , c.y , d);
			z = EaseInOutQuad (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInQuad)
		{
			x = EaseOutInQuad (t , b.x , c.x , d);
			y = EaseOutInQuad (t , b.y , c.y , d);
			z = EaseOutInQuad (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInCubic)
		{
			x = EaseInCubic (t , b.x , c.x , d);
			y = EaseInCubic (t , b.y , c.y , d);
			z = EaseInCubic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutCubic)
		{
			x = EaseOutCubic (t , b.x , c.x , d);
			y = EaseOutCubic (t , b.y , c.y , d);
			z = EaseOutCubic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutCubic)
		{
			x = EaseInOutCubic (t , b.x , c.x , d);
			y = EaseInOutCubic (t , b.y , c.y , d);
			z = EaseInOutCubic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInCubic)
		{
			x = EaseOutInCubic (t , b.x , c.x , d);
			y = EaseOutInCubic (t , b.y , c.y , d);
			z = EaseOutInCubic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInQuart)
		{
			x = EaseInQuart (t , b.x , c.x , d);
			y = EaseInQuart (t , b.y , c.y , d);
			z = EaseInQuart (t , b.z , c.z , d);
		}	
		else if(Ease == Ease.EaseOutQuart)	
		{
			x = EaseOutQuart (t , b.x , c.x , d);
			y = EaseOutQuart (t , b.y , c.y , d);
			z = EaseOutQuart (t , b.z , c.z , d);
		}	
		else if(Ease == Ease.EaseInOutQuart)
		{
			x = EaseInOutQuart (t , b.x , c.x , d);
			y = EaseInOutQuart (t , b.y , c.y , d);
			z = EaseInOutQuart (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInQuart)
		{
			x = EaseOutInQuart (t , b.x , c.x , d);
			y = EaseOutInQuart (t , b.y , c.y , d);
			z = EaseOutInQuart (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInQuint)
		{
			x = EaseInQuint (t , b.x , c.x , d);
			y = EaseInQuint (t , b.y , c.y , d);
			z = EaseInQuint (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutQuint)
		{
			x = EaseOutQuint (t , b.x , c.x , d);
			y = EaseOutQuint (t , b.y , c.y , d);
			z = EaseOutQuint (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutQuint)
		{
			x = EaseInOutQuint (t , b.x , c.x , d);
			y = EaseInOutQuint (t , b.y , c.y , d);
			z = EaseInOutQuint (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInQuint)
		{
			x = EaseOutInQuint (t , b.x , c.x , d);
			y = EaseOutInQuint (t , b.y , c.y , d);
			z = EaseOutInQuint (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInSine)
		{
			x = EaseInSine (t , b.x , c.x , d);
			y = EaseInSine (t , b.y , c.y , d);
			z = EaseInSine (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutSine)
		{
			x = EaseOutSine (t , b.x , c.x , d);
			y = EaseOutSine (t , b.y , c.y , d);
			z = EaseOutSine (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutSine)
		{
			x = EaseInOutSine (t , b.x , c.x , d);
			y = EaseInOutSine (t , b.y , c.y , d);
			z = EaseInOutSine (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInSine)
		{
			x = EaseOutInSine (t , b.x , c.x , d);
			y = EaseOutInSine (t , b.y , c.y , d);
			z = EaseOutInSine (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInExpo)
		{
			x = EaseInExpo (t , b.x , c.x , d);
			y = EaseInExpo (t , b.y , c.y , d);
			z = EaseInExpo (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutExpo)
		{
			x = EaseOutExpo (t , b.x , c.x , d);
			y = EaseOutExpo (t , b.y , c.y , d);
			z = EaseOutExpo (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutExpo)
		{
			x = EaseInOutExpo (t , b.x , c.x , d);
			y = EaseInOutExpo (t , b.y , c.y , d);
			z = EaseInOutExpo (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInExpo)
		{
			x = EaseOutInExpo (t , b.x , c.x , d);
			y = EaseOutInExpo (t , b.y , c.y , d);
			z = EaseOutInExpo (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInCirc)
		{
			x = EaseInCirc (t , b.x , c.x , d);
			y = EaseInCirc (t , b.y , c.y , d);
			z = EaseInCirc (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutCirc)
		{
			x = EaseOutCirc (t , b.x , c.x , d);
			y = EaseOutCirc (t , b.y , c.y , d);
			z = EaseOutCirc (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutCirc)
		{
			x = EaseInOutCirc (t , b.x , c.x , d);
			y = EaseInOutCirc (t , b.y , c.y , d);
			z = EaseInOutCirc (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInCirc)
		{
			x = EaseOutInCirc (t , b.x , c.x , d);
			y = EaseOutInCirc (t , b.y , c.y , d);
			z = EaseOutInCirc (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInElastic)
		{
			x = EaseInElastic (t , b.x , c.x , d);
			y = EaseInElastic (t , b.y , c.y , d);
			z = EaseInElastic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutElastic)
		{
			x = EaseOutElastic (t , b.x , c.x , d);
			y = EaseOutElastic (t , b.y , c.y , d);
			z = EaseOutElastic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutElastic)
		{
			x = EaseInOutElastic (t , b.x , c.x , d);
			y = EaseInOutElastic (t , b.y , c.y , d);
			z = EaseInOutElastic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInElastic)
		{
			x = EaseOutInElastic (t , b.x , c.x , d);
			y = EaseOutInElastic (t , b.y , c.y , d);
			z = EaseOutInElastic (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInBack)
		{
			x = EaseInBack (t , b.x , c.x , d);
			y = EaseInBack (t , b.y , c.y , d);
			z = EaseInBack (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutBack)
		{
			x = EaseOutBack (t , b.x , c.x , d);
			y = EaseOutBack (t , b.y , c.y , d);
			z = EaseOutBack (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutBack)
		{
			x = EaseInOutBack (t , b.x , c.x , d);
			y = EaseInOutBack (t , b.y , c.y , d);
			z = EaseInOutBack (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInBack)
		{
			x = EaseOutInBack (t , b.x , c.x , d);
			y = EaseOutInBack (t , b.y , c.y , d);
			z = EaseOutInBack (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInBounce)
		{
			x = EaseInBounce (t , b.x , c.x , d);
			y = EaseInBounce (t , b.y , c.y , d);
			z = EaseInBounce (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutBounce)
		{
			x = EaseOutBounce (t , b.x , c.x , d);
			y = EaseOutBounce (t , b.y , c.y , d);
			z = EaseOutBounce (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseInOutBounce)
		{
			x = EaseInOutBounce (t , b.x , c.x , d);
			y = EaseInOutBounce (t , b.y , c.y , d);
			z = EaseInOutBounce (t , b.z , c.z , d);
		}
		else if(Ease == Ease.EaseOutInBounce)
		{
			x = EaseOutInBounce (t , b.x , c.x , d);
			y = EaseOutInBounce (t , b.y , c.y , d);
			z = EaseOutInBounce (t , b.z , c.z , d);
		}
		
		
		return new Vector3(x,y,z);
	}
	public static float ChangeFloat(float t , float b , float c , float d , Ease Ease)
	{
		float value = 0;
		
		if(Ease == Ease.Linear)
			value = EaseNone (t , b , c , d);
		else if(Ease == Ease.EaseInQuad)
			value = EaseInQuad (t , b , c , d);
		else if(Ease == Ease.EaseOutQuad)
			value = EaseOutQuad (t , b , c , d);
		else if(Ease == Ease.EaseInOutQuad)
			value = EaseInOutQuad (t , b , c , d);
		else if(Ease == Ease.EaseOutInQuad)
			value = EaseOutInQuad (t , b , c , d);
		else if(Ease == Ease.EaseInCubic)
			value = EaseInCubic (t , b , c , d);
		else if(Ease == Ease.EaseOutCubic)
			value = EaseOutCubic (t , b , c , d);
		else if(Ease == Ease.EaseInOutCubic)
			value = EaseInOutCubic (t , b , c , d);
		else if(Ease == Ease.EaseOutInCubic)
			value = EaseOutInCubic (t , b , c , d);
		else if(Ease == Ease.EaseInQuart)
			value = EaseInQuart (t , b , c , d);
		else if(Ease == Ease.EaseOutQuart)
			value = EaseOutQuart (t , b , c , d);
		else if(Ease == Ease.EaseInOutQuart)
			value = EaseInOutQuart (t , b , c , d);
		else if(Ease == Ease.EaseOutInQuart)
			value = EaseOutInQuart (t , b , c , d);
		else if(Ease == Ease.EaseInQuint)
			value = EaseInQuint (t , b , c , d);
		else if(Ease == Ease.EaseOutQuint)
			value = EaseOutQuint (t , b , c , d);
		else if(Ease == Ease.EaseInOutQuint)
			value = EaseInOutQuint (t , b , c , d);
		else if(Ease == Ease.EaseOutInQuint)
			value = EaseOutInQuint (t , b , c , d);
		else if(Ease == Ease.EaseInSine)
			value = EaseInSine (t , b , c , d);
		else if(Ease == Ease.EaseOutSine)
			value = EaseOutSine (t , b , c , d);
		else if(Ease == Ease.EaseInOutSine)
			value = EaseInOutSine (t , b , c , d);
		else if(Ease == Ease.EaseOutInSine)
			value = EaseOutInSine (t , b , c , d);
		else if(Ease == Ease.EaseInExpo)
			value = EaseInExpo (t , b , c , d);
		else if(Ease == Ease.EaseOutExpo)
			value = EaseOutExpo (t , b , c , d);
		else if(Ease == Ease.EaseInOutExpo)
			value = EaseInOutExpo (t , b , c , d);
		else if(Ease == Ease.EaseOutInExpo)
			value = EaseOutInExpo (t , b , c , d);
		else if(Ease == Ease.EaseInCirc)
			value = EaseInCirc (t , b , c , d);
		else if(Ease == Ease.EaseOutCirc)
			value = EaseOutCirc (t , b , c , d);
		else if(Ease == Ease.EaseInOutCirc)
			value = EaseInOutCirc (t , b , c , d);
		else if(Ease == Ease.EaseOutInCirc)
			value = EaseOutInCirc (t , b , c , d);
		else if(Ease == Ease.EaseInElastic)
			value = EaseInElastic (t , b , c , d);
		else if(Ease == Ease.EaseOutElastic)
			value = EaseOutElastic (t , b , c , d);
		else if(Ease == Ease.EaseInOutElastic)
			value = EaseInOutElastic (t , b , c , d);
		else if(Ease == Ease.EaseOutInElastic)
			value = EaseOutInElastic (t , b , c , d);
		else if(Ease == Ease.EaseInBack)
			value = EaseInBack (t , b , c , d);
		else if(Ease == Ease.EaseOutBack)
			value = EaseOutBack (t , b , c , d);
		else if(Ease == Ease.EaseInOutBack)
			value = EaseInOutBack (t , b , c , d);
		else if(Ease == Ease.EaseOutInBack)
			value = EaseOutInBack (t , b , c , d);
		else if(Ease == Ease.EaseInBounce)
			value = EaseInBounce (t , b , c , d);
		else if(Ease == Ease.EaseOutBounce)
			value = EaseOutBounce (t , b , c , d);
		else if(Ease == Ease.EaseInOutBounce)
			value = EaseInOutBounce (t , b , c , d);
		else if(Ease == Ease.EaseOutInBounce)
			value = EaseOutInBounce (t , b , c , d);
		
		return value;
	}
	
	
}

BaseTweenObject.cs

using UnityEngine;
using System.Collections;

public enum TweenType {
	TweenPosition = 0,
	TweenRotation = 1,
	TweenAlpha = 2
}


public class BaseTweenObject {
	
	public float totalTime = 0;
	public float delay = 0;
	public Ease ease = Ease.Linear;	
	
	private TweenType _tweenType;
	public TweenType tweenType
	{
		set{_tweenType = value;}
		get{return _tweenType;}
	}
	
	private float _startTime;
	public float startTime
	{
		set{_startTime = value;}
		get{return _startTime;}
	}
	
	private bool _ended = false;
	public bool ended
	{
		set{_ended = value;}
		get{return _ended;}
	}
	
	private bool _canStart = false;
	public bool canStart
	{
		set{_canStart = value;}
		get{return _canStart;}
	}
	
	private string _id = "";
	public string id
	{
		set{_id = value;}
		get{return _id;}
	}
	
	public BaseTweenObject ()
	{
		
	}
	public void Init()
	{
		this.id = "tween" + Time.time.ToString();
	}
	
	public void CopyTween (BaseTweenObject tween)
	{
		this.totalTime = tween.totalTime;
		this.delay = tween.delay;
		this.ease = tween.ease;
		this.tweenType = tween.tweenType;
	}
}




你可能感兴趣的:(Tween 动画类)