網上有多個不同版本的Itween插件使用方法,但各個地方講解的比較分散,所以在這裏統一進行整理。
一、 iTween的使用原理
iTween的核心是數值插值,簡單說就是給iTween兩個數值(開始值,結束值),它會自動生成一些中間值,例如:開始值-> 中間值 -> 中間值 …. -> 結束值。
這裏的數值可以理解爲: 數字,座標點,角度,物體大小,物體顏色,音量大小等。
二、iTween的使用方式
iTween可以從各個地方獲取到,但最正規的方式是從Unity asset store中直接搜索下載(免費)。iTween的主要文件有兩個iTween.cs 和 iTweenPath.unitypackage(編輯路徑才需要這個包)。
三、核心方法
iTween.MoveTo(): 讓模型移動到一個位置,它的底層函數是通過動態的修改模型每一幀的transform.position完成的,所以它會百分之百到達目標點,不會出現誤差。
iTween.MoveFrom():它和上面的一樣,iTween.MoveTo()是將模型移動到目標位置,而iTween.MoveFrom()是將模型從目標位置移動到原始位置。
iTween.MoveAdd() 和iTween.MoveBy()底層實現一樣,大家可以去看源碼。處理移動時採用的是transform.Translate也就是API的平移,這樣在處理移動的時候可能會出現一些誤差,但是效果好點。
iTween.MoveUpdate():和iTween.MoveTo()差不多,只是它需要放在循環或者Update()中。
四、詳細內容
API:
後綴名區別 |
***From |
當前值立即變成目標值,並逐漸緩動成最初值 |
***To |
從當前值逐漸緩動成目標值 |
***Update |
同To,但是在使用Update函數時會令人難以置信的提高性能,或類似循環的情況下涉及“live”設置改變值。不在使用EaseType |
3大事件 |
onstart |
動畫開始觸發事件 |
onstarttarget |
事件通過消息加載將發送給的對象 |
onstartparams |
發送消息時傳遞的參數 |
onupdate |
動畫中觸發事件 |
onupdatetarget |
事件通過消息加載將發送給的對象 |
onupdateparams |
發送消息時傳遞的參數 |
oncomplete |
動畫結束觸發事件 |
oncompletetarget |
事件通過消息加載將發送給的對象 |
oncompleteparams |
發送消息時傳遞的參數 |
公共屬性 |
name |
根據獨立的名字用於停止iTweens |
ignoretimescale |
設置爲true將會允許動畫繼續當前的時間,這個在遊戲通過設置Time.timeScale=0之後暫停遊戲後的菜單動畫很有用 |
easetype |
動畫運動曲線枚舉 |
looptype |
循環方式枚舉 |
time |
動畫完成時間 |
delay |
開始動畫之前等待的時間 |
From-To方法 |
AudioFrom |
音頻和音量 |
AudioTo |
AudioUpdate |
CameraFadeFrom |
攝像機漸隱的數量(透明度) |
CameraFadeTo |
ColorFrom |
顏色 |
ColorTo |
ColorUpdate |
FadeFrom |
遊戲對象的alpha值;如果附加的組件是light,guitext或guitexture,將會是變成動畫的目標 |
FadeTo |
FadeUpdate |
LookFrom |
隨着時間旋轉一個遊戲對象監視着提供的Transform或Vector3 |
LookTo |
LookUpdate |
MoveFrom |
移動:隨着時間改變遊戲對象的位置到提供的目標點 |
MoveTo |
MoveUpdate |
MoveAdd |
移動增量Vector3 |
MoveBy |
RotateFrom |
旋轉:隨着時間在角度上旋轉游戲對象到提供的歐拉角角度 |
RotateTo |
RotateUpdate |
RotateAdd |
旋轉增量Vector3 |
RotateBy |
旋轉增量Vector3*360 |
ScaleFrom |
縮放:隨着時間改變物體的縮放 |
ScaleTo |
ScaleUpdate |
ScaleAdd |
縮放增量Vector3,原來的縮放+Vector3 |
ScaleBy |
縮放倍數Vector3,原來的縮放*Vector3 |
攝像機 |
CameraFadeAdd |
創建一個遊戲對象(如果不存在)在提供的深度,用於模擬攝像機的褪色 |
CameraFadeDepth |
改變攝像機褪色的深度 |
CameraFadeDestroy |
移除和銷燬一個攝像機的褪色 |
CameraFadeSwap |
改變攝像機褪色的紋理 |
CameraTexture |
使用CameraFade創建並返還一個全屏的Texture2D |
動畫控制 |
Hash |
創建哈希表 |
Init |
設置遊戲對象當一個初始化被添加時避免停頓 |
Pause |
暫停itween |
Resume |
從新開始iTween |
Stop |
停止iTweens |
StopByName |
根據名字停止iTweens |
其他方法 |
ValueTo |
正如應用程序期望的返回一個在提供的”from”和”to”之間的插值給回調方法.需要”onupdate”回調 |
Count |
返回iTweens的整數量 |
EaseType |
緩動類型 |
LoopType |
循環的枚舉類型 |
Stab |
基於提供的音量,音頻,和任何跟隨的延遲來播放音頻剪輯.音頻源是可選的,因爲iTween將會提供一個 |
用於調式 |
DrawLine |
當調用OnDrawGizmos()函數時,他會通過提供的Vector3或Transforms數組畫一條線 |
DrawLineGizmos |
使用Gizmos.DrawLine()通過提供的Vector3s或Transforms數組畫一條線 |
DrawLineHandles |
利用Handles.Drawline()通過提供的Vector3s或Transforms數組畫一條線。 |
DrawPath |
當調用OnDrawGizmos()時,他會通過Vector3或Transforms數組繪製一個曲線路徑 |
DrawPathGizmos |
使用Gizmos.DrawLine()通過Vector3s或Transforms數組繪製一個曲線路徑 |
DrawPathHandles |
利用Handles.DrawLine()通過提供的Vector3s或Transforms繪製一個曲線路徑 |
震動 |
PunchPosition |
使用一個震動的力量給遊戲對象的位置使他晃動到他的原始位置 |
PunchRotation |
使用一個震動的力量給遊戲對象的旋轉使他晃動到他的原始旋轉 |
PunchScale |
使用一個震動的力量給遊戲對象的縮放使他晃動到他的原始縮放 |
ShakePosition |
隨着時間通過一個遞減數量隨機的震動遊戲對象的位置 |
ShakeRotation |
隨着時間通過一個遞減數量隨機的震動遊戲對象的旋轉 |
ShakeScale |
隨着時間通過一個遞減數量隨機的震動遊戲對象的縮放 |
路徑 |
PathLength |
返回通過Vector3或Transforms數組繪製的曲線路徑的長度 |
PutOnPath |
根據提供的百分比放置遊戲對象的路徑 |
PointOnPath |
根據提供的百分比返回一個路徑上的Vector3位置 |
差值運算 |
FloatUpdate |
根據提供的速度返回一個float緩動在當前和目標值之間;speed=1表示單位時間內達到終點 |
RectUpdate |
通過提供的加速度返回一個用於緩衝當前和目標值之間的一個矩形;speed=1表示單位時間內達到終點 |
Vector2Update |
通過提供的加速度返回一個用於緩衝當前和目標值之間的一個Vector2;speed=1表示單位時間內達到終點 |
Vector3Update |
通過提供的加速度返回一個用於緩衝當前和目標值之間的一個Vector3;speed=1表示單位時間內 |
動畫方式枚舉:( http://www.robertpenner.com/easing/easing_demo.html)
平方
-
easeInQuad
-
easeOutQuad
-
easeInOutQuad
立方-
easeInCubic
-
easeOutCubic
-
easeInOutCubic
4次方-
easeInQuart
-
easeOutQuart
-
easeInOutQuart
5次方-
easeInQuint
-
easeOutQuint
-
easeInOutQuint
正弦-
easeInSine
-
easeOutSine
-
easeInOutSine
2的10次方-
easeInExpo
-
easeOutExpo
-
easeInOutExpo
平方根-
easeInCirc
-
easeOutCirc
-
easeInOutCirc
線性 彈簧 反彈-
easeInBounce
-
easeOutBounce
-
easeInOutBounce
後退-
easeInBack
-
easeOutBack
-
easeInOutBack
鬆緊帶
-
easeInElastic
-
easeOutElastic
-
easeInOutElastic
動畫曲線:
easyIn:淡入 easyOut:淡出 easyInOut:淡入淡出
循環類型: none(一次性的不循環),loop(單向循環,就是到達終點後馬上回到起點,再繼續),pingpong(往復循環)
五、路徑配置
1. 將iTweenPath.cs拖至某個遊戲對象上, 這個遊戲對象的就會多出如下屬性,下圖表示路徑由5個節點組成, 路徑名稱爲myPath。
2. 可以手工填寫節點座標,也可以在場景中調整節點座標。
代碼可以參考官方示例,本文就不進行介紹了。
參考文檔:
http://www.xuanyusong.com/archives/2052
http://blog.csdn.net/chaixinke/article/details/44628123
http://www.manew.com/1683.html