本文及系列參考於Andy老師的DOTween系列
歡迎大家關注Andy老師
6、Set設置參數
在Unity中添加一個Cube,並掛載這個腳本
SetLoops():設置循環
//參數1.循環次數(-1表示無限循環)
//參數2.循環方式
//Yoyo:來回運動
//Restart:重新開始(運動完馬上返回原來狀態再接着運動)
//Incremental:一直朝着一個方向運動
transform.DOMove(Vector3.one, 2).SetLoops(-1,LoopType.Yoyo);
SetAutoKill():設置自動殺死動畫
transform.DOMove(Vector3.one, 2).SetAutoKill(true);
From():反向
//from(反向運動,從目標點運動回起始點)
//true為增量運動,false則為目標值運動。無參默認為目標值運動
transform.DOMove(Vector3.one, 2).From(true);
SetDelay():設置延時執行
transform.DOMove(Vector3.one, 2).SetDelay(2);
SetSpeedBased():設置動畫以速度為基准
//參數2.原本表示持續時間的參數,就變為了每秒的速度
transform.DOMove(Vector3.one*5, 2).SetSpeedBased();
SetRelative():設置為增量運動
transform.DOMove(Vector3.one * 5, 2).SetRelative(true);
SetId():設置動畫ID
//設置ID,可以用於之后再調用
transform.DOMove(Vector3.one * 5, 2).SetId("id");
DOTween.Play("id");
SetRecyclable():設置動畫是否可回收
//設置是否可回收
//為true的話,動畫播放完會被回收,緩存下來,不然播完就直接銷毀
transform.DOMove(Vector3.one * 5, 2).SetRecyclable(true);
SetUpdate():設置動畫的幀函數
//設置動畫的幀函數
//第一個參數 UpdateType :選擇使用的幀函數
//UpdateType.Normal:更新每一幀中更新要求。
//UpdateType.Late:在LateUpdate調用期間更新每一幀。
//UpdateType.Fixed:使用FixedUpdate調用進行更新。
//UpdateType.Manual:通過手動DOTween.ManualUpdate調用進行更新。
//第二個參數:為TRUE,則補間將忽略Unity的Time.timeScale
transform.DOMove(Vector3.one * 5, 2).SetUpdate(UpdateType.Fixed);
7、Ease曲線
在Unity中添加一個Cube,並掛載這個腳本
SetEase():設置曲線
點擊這里查看Ease的各種枚舉類型的效果動畫
//參數1 Ease的各種枚舉類型
//參數2 Amplitude(振幅):就是移動次數,起始點移動到目標算移動一次,再移動回來移動兩次
//參數3 period 值的范圍是 -1~1
//值 > 0時,為活動范圍的衰減值,活動范圍會由大變小
//值 = 0時,就是均勻的在起始坐標和目標坐標之間運動
//值 < 0時,會施加一個向目標坐標的一個力,活動范圍一點點增大,最后逼近目標點
//這兩個參數只對Flash, InFlash, OutFlash, InOutFlash這四種曲線有用,其他的曲線起作用的就只有Ease枚舉參數
transform.DOMove(Vector3.one * 5, 2).SetEase(Ease.InBack,3,0);
Animation設置曲線:
public AnimationCurve curve;
private void Start()
{
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
//AnimationCurve 橫軸是時間, 不過不是具體的時間,而是時間比例
//AnimationCurve 縱軸是倍數
//假設縱軸的值為v,傳入DOMove的第一個參數endValue是e,起始點坐標是s
//此物體最后動畫結束時的實際坐標即為 v * (e - s)+s
}
以回調函數為參數:
private void Start()
{
transform.DOMove(Vector3.one * 5, 2).SetEase(EaseFun);
}
//返回值是運動距離的百分比 值應為0~1之間,最后的值需為1,不然停留的位置不會是目標位置
private float EaseFun(float time, float duration, float overshootOrAmplitude, float period)
{
return time / duration;
}
8、回調函數
在Unity中添加一個Cube,並掛載這個腳本
1.動畫完成回調
transform.DOMove(Vector3.one, 2).OnComplete(() => { });
2.完成單個循環周期時觸發
transform.DOMove(Vector3.one, 2).OnStepComplete(() => { });
3.動畫被殺死時回調
transform.DOMove(Vector3.one, 2).OnKill(() => { });
4.動畫播放時回調,暫停后重新播放也會調用
transform.DOMove(Vector3.one, 3).OnPlay(() => { });
5.只在第一次播放動畫時調用,在play之前調用
transform.DOMove(Vector3.one, 2).OnStart(() => { });
6.動畫暫停時回調
transform.DOMove(Vector3.one, 2).OnPause(() => { });
7.動畫回退時回調
//以下情況會被調用
//使用DORestart重新播放時
//使用Rewind倒播動畫完成時
//使用DOFlip翻轉動畫完成時
//使用DOPlayBackwards反向播放動畫完成時
transform.DOMove(Vector3.one, 2).OnRewind(() => { });
8.幀回調
transform.DOMove(Vector3.one, 2).OnUpdate(() => { });
9.在路徑動畫時,改變目標點時的回調,參數為當前目標點的下標
transform.DOMove(Vector3.one, 2).OnWaypointChange((value) => { });
9、動畫控制函數
在Unity中添加一個Cube,並掛載這個腳本
1.播放
transform.DOPlay();
2.暫停
transform.DOPause();
3.重播
transform.DORestart();
4.倒播,此方法會直接退回起始點
transform.DORewind();
5.平滑倒播,此方法會按照之前的運動方式從當前位置退回起始點
transform.DOSmoothRewind();
6.殺死動畫
transform.DOKill();
7.翻轉補間的方向和Rewind效果有點像
transform.DOFlip();
8.跳轉時間點
//第一個參數跳轉的時間點,第二個參數是跳轉后是否播放動畫
transform.DOGoto(1.5f, true);
9.反向播放動畫
//反向播放動畫,在動畫播放到一半時執行,會退回起始點,在一開始執行看不到效果是因為,物體本身就在起始點
transform.DOPlayBackwards();
10.正向播放動畫
transform.DOPlayForward();
11.TogglePause
//當暫停時,執行就繼續播放,播放時,執行就暫停
transform.DOTogglePause();