iTween.cs 下載地址:http://pan.ceeger.com/viewfile.php?file_id=1830&file_key=0UJAymOJ
版本為2.0.43
一.iTween 介紹
iTween是一個動畫庫,目的是最小的投入實現最大的產出.讓你做開發更輕松,用它可以輕松實現各種動畫,晃動,旋轉,移動,褪色,上色,控制音頻等等。
二.iTween 原理
iTween的核心是數值插值,簡單說就是給iTween兩個數值(開始值,結束值),它會自動生成一些中間值,例如:, 開始值-> 中間值 -> 中間值 …. -> 結束值。
這里的數值可以理解為: 數字,坐標點,角度,物體大小,物體顏色,音量大小等。
三.主要文件有兩個iTween.cs 和 iTweenPath.unitypackage(編輯路徑才需要這個包)
http://l6.yunpan.cn/lk/Qv44q7AV7emHG
四.如何將iTween 加入項目:
在項目中建立Plugins目錄, 然后將下載的iTween.cs放到Plugins目錄即可。
如果需要編輯路徑, 使用import package->custom package菜單功能加入iTweenPath.unitypackage。
五.幾種效果演示
1. 物體移動
iTween.MoveTo(gameObject,new Vector3(100,200,0),2);
其中第一個參數是要移動的物體
第二個參數是要移動到的目標點坐標
第三個參數是移動需要的時間,然后物體將在2秒之內移動到坐標點為(x=100,y=200,z=0)的位置。
如果你需要在物體移動過程中更好的控制,我們可以添加更多的參數(所有函數可用的參數列表可以參考http://itween.pixelplacement.com/documentation.php):
iTween.MoveTo(gameObject,iTween.Hash("position",new Vector3(100,200,0),"time",2));
這一段代碼的效果與第一個例子效果是一樣的,只是第二個參數是一個字典類型的數據,可以設置更多的參數。
通用的參數介紹如下:
position:坐標,包括x,y,z三個軸向
path:路徑,是一個坐標數組,后面會講到iTweenPath腳本的使用,配合着itweenPath可以讓物體沿着路徑點移動。
x:x軸向的位置,如果只設置了x軸,物體就只移動x軸,y,z軸不會改變
orienttopath:如果設置為true,物體移動到目標點的過程中,z軸會一直朝向下一個目標點
looktarget:物體朝向,物體在移動過程中會一直朝向我們設置的坐標點的坐標
looktime:物體看向looktarget或orienttopath設置坐標的時間
islocal:當物體的目標點是相對於父節點的坐標,需要把isLocal設置為true,否則為false
time speed:這兩個參數都可以控制物體移動的快慢
delay:延遲時間,當物體開始移動之前等待時間
easetype:移動模式,我們可以設置一些加速度的效果,這個參數值是一個枚舉iTween.Easetype
looptype:循環模式,一共有三種模式
iTween.LoopType.none:不循環
iTween.LoopType.loop:循環,物體移動到終點后會跳到起點重新移動
iTween.LoopType.pingPong:來回循環,物體移動到終點后會再以相同的模式和時間再移動到起點,然后再移動到終點,一直循環
onstart:物體開始移動之前的回調函數
onstarttarget:回調函數接收對象,默認開始之前會向iTween.MoveTo函數的第一個參數的物體發送回調,根據需要在這里設置合適的回調接收者
onstartparams:回調方法的參數
onupdate:物體在移動過程中的回調函數
onupdatetarget:物體在移動過程中回調函數的接收者
onupdateparams:移動過程中回調函數的參數
oncomplete:物體移動完成后的回調
oncompletetarget:物體移動完成后的回調函數的接收者
oncompleteparams:物體移動完成后的回調函數的參數
ignoretimescale:忽略時間縮放,時間縮放是Time.timeScale = 0.5f; 默認值為1,如果我們把時間縮放值設置小於1,我們游戲的整體時間都會放慢,就像播放慢鏡頭一樣,如果設置ignoretimescale為true,無論我們時間怎么縮放,對物體的移動都沒有影響。
只要我們了解了itween的其中一個使用方式,其他的都是一樣的做法。
我們可以做的動畫有:位移,旋轉,縮放,音量漸變,攝像機淡入淡出,顏色的漸變,物體振動等很多有用的動畫。
2. 數值過渡
iTween.ValueTo(gameObject, iTween.Hash( "from", y, "to", toY, "easetype", easeType, "loopType", loopType, "onupdate", "onupdate", "time", tm ));
3. 振動
iTween.ShakePosition(target, new Vector3(0, 0.1f, 0), 1);
4. 按路徑移動
var path = GameObject.Find("Plane").GetComponent("iTweenPath").GetPath("myPath"); iTween.MoveTo(gameObject, iTween.Hash(//"position", Vector3(0, 0, 0), "path", path, "time", 20, "easetype", "linear"));
以下是iTween插件各方法的大致用法,每個方法都有簡單傳參和Hashtable定制兩種用法,Hashtable可用iTween.Hash()生成,每個方法所需參數及其功能請參考iTween內部提示。
常用方法簡介:
AudioFrom:pitch和volum屬性提供的是初始值
audioTo: pitch和volum屬性提供的是終結值
audioUpdate:pitch和volum屬性提供的是終結值 此方法用於Update()方法中
stab:播放AudioClip一次,不用手動加載AudioSource組件
CameraFadeAdd:創建一個對象可以模擬攝相機的淡入淡出。
CameraFadeSwap:改變攝相機的淡入淡出背景圖(對象為CameraFadeAdd返回對象)
CameraFadeFrom:立即改變攝相淡入淡出的透明度然后隨時間返回.amount:當執行淡入淡出時,其透明度的變化速度。(透明度越大,淡入淡出越快,個人認為100為滿,如果速度較快,時間較長,漸變效果會在時間快要結束時出現。此方法配合CameraFadeAdd使用,只有在CameraFadeAdd前提下,才可以進行淡入淡出操作。此方法為從CameraFadeAdd返回的對象出淡出到原來的界面。
CameraFadeTo:隨時間改變攝相機淡入淡出透明度,此方法為從本界面淡入到CameraFadeAdd返回的對象
ColorFrom:即刻改變對象的顏色值然后隨着時間改變其回原來的顏色(總的來說,就是對GUIText和GUITexture的顏色的淡入淡出效果)。Color:此屬性代表對象變化初始值。與audioFrom有異曲同工之效
ColorTo:隨着時間改變對象的顏色組。同上例一樣。Color:此屬性代表對象變化最終值,與audioTo有異曲同工之效
(注意,ColorFrom和ColorTo還有后面的ColorUpdate方法的NamedColorValue屬性,有一些對象不具有NamedColorValue里的屬性,運行時會有提示)
ColorUpdate:跟ColorTo類似,但花銷的成本較少,此方法在Update方法中被調用
FadeFrom:即刻改變對象的的阿爾法值,然后隨着時間將其阿爾法值變回原值。如果對象上有掛載
a Light, GUIText or GUITexture這些組件,這些組件將成為被執行的對象。
注:阿爾法值可以粗略理解為對象的透明度,值越小,透明度越大。這里的 alpha或者 amount 是變化初值
FadeTo:同上,alpha或amount是變化終值。
FadeUpdate :同FadeTo類似,在Update()方法中調用,提供時刻改變屬性值的環境。不局限於 EaseType
LookFrom:即刻旋轉物體讓其看提供的Vector3或都Transfrom,然后隨時間旋轉回原來的角度值
注:物體的臉部一般以本地坐標(即物體坐標)的Z軸,臉部朝向方法,即Z軸指向方法。
LookTo:隨時間旋轉物體讓其臉部朝向所提供的Vector3或Transform位置。
LookUpdate:同LookTo類似,在Update()方法中調用。
MoveAdd:隨時間改變游戲對象的位置(原理還有點蒙,感覺跟MoveBy有點像)amount:是改變物體位置的一個值,不是目標位置的坐標。
MoveBy:增加提供的坐標到游戲對象的位置
MoveFrom:立即改變游戲對象的位置為提供的,然后隨時間改變游戲對象位置到初始位置
屬性:movetopath:Boolean值 ,是否自動將物體置於Ptah的起始點,默認值為真
Path:目標文件可用路徑編緝器獲得
PunchPosition:對物體的位置添加一個搖晃的力,使其搖晃最終歸於原來的位置 其晃動大小和方法由提供的amount(Vector3)決定(方法由Vector3的x,y,z共同決定,晃動大小,由各個方法的值的大小決定)
PunchRotation:對物體的旋轉添加一個搖晃的力,使其旋轉最終歸於初始值。其旋轉角度大小和方向由提供的Vector3決定,建議用單軸而不是整個Vector3,例如(0,1,0)是繞Y軸旋轉,角度大小由Vector3Y軸值大小決定
PunchScale:對物體的大小比例添加一個搖晃的力,使其大小比例變化最終歸於初始值。其大小比例變
化方向和大小由提供的Vector3決定。例如(0,1,0)是在Y軸方向對物體大小變化(即變化物體的高)
,大小由該方向的值大小決定
PutOnPath :根據提供的百分比將游戲物體置於所提供路徑上(1為百分之百)。
PointOnPath:根據提供的百分比返回一條路徑上的Vector3的位置
RectUpdate:返回一個RECT在提供的兩個值之間,大小變化根據提供的速度
Vector3Update:返回一個Vector3在提供的兩個值之間,大小變化根據提供的速度
Vector2Update:返回一個Vector3在提供的兩個值之間,大小變化根據提供的速度
FloatUpdate:返回一個float在提供的兩個值之間,大小變化根據提供的速度
RotateAdd:對游戲物體的旋轉角度隨着時間增加所提供的歐拉角(順時針旋轉。Vector3三個值解析:
X,Y,Z各代表圍繞哪個軸轉動。其轉動角度就是X,Y,Z、的值的大小。amount:歐拉角大小)
RotateBy:把提供的值乘以360,然后隨着時間旋轉游戲物體的角度按計算得的值。例 如(0,1,0)就是繞Y軸旋轉360度。 順時針旋轉
RotateFrom:立即改變游戲物體角度的歐拉角,然后隨着時間旋轉回原來的角度,屬性提供的歐拉角為變化初始值
RotateTo:旋轉游戲物體角度到我們所提供的歐拉角角度。屬性提供的歐拉角為變化終結值
RotateUpdate:跟RotateTo類似,該方法在Update中被調用,提供一個可改變屬性值的環境。不用局限EaseType
ScaleAdd:隨着時間根據提供的amount(Vector3)增加游戲物體的大小
ScaleBy:隨着時間變形游戲物體,游戲物體最終變形大小由我們提供的amount(Vector3)值決定 算法:
最終變形大小=游戲物體初始的sacle * 我們提供的 amount值
ScaleFrom:立即改變游戲物體的比例大小,然后隨時間返回游戲物體原本的大小。amount:為物體變形的初始大小
ScaleTo:隨着時間改變物體的比例大小到我們提供的Scale大小(scale值)
ScaleUpdate:跟ScaleTo類似,此方法用於Update中,提供可改變屬性值的環境 ,不用局限於EaeType
ShakePosition:根據提供的amount衰減其值隨機搖動游戲物體的位置,其晃動大小和方向由提供的amount(Vector3)決定(方向根據Vector3隨機,晃動大小,由各個方向的值的大小決定)
ShakeRotation:根據提供的amount衰減其值隨機擺動旋轉游戲物體的角度 。Vector3三個值解析:X,Y,Z各代表圍繞哪個軸旋轉。其轉動角度就是X,Y,Z、的值的大小
ShakeScale:根據提供的amount衰減其值隨機擺動改變游戲物體的大小。其大小比例變化方向和大小由提供的Vector3決定。例如(0,1,0)是在Y軸方向對物體大小變化(即變化物體的高),大小由該方向的值大小決定
Pause:停止iTween 如果一個iTween以ignoreTimeScale定制且設為True停止工作。 參考不同參數Pause的說明。
Stop:停止iTweens,和Pause一樣,不同的參數有不同作用。
Stop By Name:停止指定名字的iTween
ValueTo:返回一個插值在兩件值之間的回調函數的值(作用不明)
(Returns a value to a callback method interpolated between the supplied 'from' and 'to'
values for application as desired. Requires an 'onupdate' callback that accepts the same
type as the supplied 'from' and 'to' properties.)