NGUI的缓动

    NGUI集成了很多动画组件,用于实现各种动画效果。

    常用的缓动效果使用方法如下:

TweenPosition tw=UITweener.Begin<TweenPosition>(gameobj, 0.5f);

Vector3 vpos=gameobj.transform.position;
tw.method = UITweener.Method.Linear;

//表现方式提供如下6种

// public enum Method  

//{      Linear,  

//       EaseIn,  

//       EaseOut,  

//       EaseInOut,  

//       BounceIn,  

//      BounceOut,  

//}  


tw.from = vpos;

vpos.x =0;

tw.to = vpos;

      不能适用于多个对象,目前没深入了解,没找到可用的方法,

     像是这样简单的缓动,使用自己利用数学函数写的时候居多。

using System;
using UnityEngine;
using System.Collections;
using System.Timers;
using System.Collections.Generic;
using System.Collections.ObjectModel;

public class TweenControl : MonoBehaviour
{
public TweenControl ()
{

}

static ArrayList tweens=new ArrayList();

public class TweenItem{

public Transform target;
public int initx;
public int inity;
public int ratiox;
public int ratioy;
public int desx;
public int desy;
public float curx=0;
}

void Start () {

}
public static void tween(Transform target,int initx,int inity,int ratiox,int ratioy,int desx,int desy){
//Dictionary<int,TweenItem> dic=new Dictionary<int,TweenItem>();
TweenItem item=new TweenItem();
item.target = target;
item.initx = initx;//初始位置
item.inity = inity;
item.ratiox = ratiox;//缓动系数,快慢
item.ratioy = ratioy;
item.desx = desx;//终点
item.desy = desy;
//dic.Add (0, item);
tweens.Add (item);

// Update (null,null);

//tm.Elapsed += new ElapsedEventHandler(UpdateTw);
//tm.Start ();
}

// Update is called once per frame
void Update() {
int count = tweens.Count;
int index = 0;
Boolean flag = false;
for (int i=0; i<count; i++) {
TweenItem item=tweens[index] as TweenItem;
Vector3 pos = item.target.localPosition;
pos.x = item.initx + item.ratiox*Mathf.Sin (item.curx);
pos.y=item.inity+item.ratioy*Mathf.Sin (item.curx);
item.curx+= 0.0314f*1.5f;
item.target.localPosition = pos;
if(Math.Abs(pos.x-item.desx)<3&&item.ratioy==0){
tweens.RemoveAt(index);
flag=true;
}
Debug.Log(pos.x);
if(Math.Abs(pos.y-item.desy)<3&&item.ratiox==0){
tweens.RemoveAt(index);
flag=true;
}
index=flag==false?index+1:index;

}

}


}

      

原文地址:https://www.cnblogs.com/sevenmoons/p/4142553.html