Unity---DOTween插件學習(2)---設置參數、Ease曲線、回調函數、動畫控制函數


本文及系列參考於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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM