DOTWeen是一個動畫插件,為Unity添加一些簡單的動畫。
簡單的使用DOTween的一些API,在使用時要引入命名空間
1:DOTween.To(()=>myValue,x=>myValue=x,Value,2.0f)//把MyValue值變化到Value值,時間為2秒,他是用插值運算,把MyValue變化到Value值上的
2:transform.ToMove(Vector3 target,duration,true/false) //讓游戲對象移動到target目標位置,第二個參數是設置動畫的時間
3:Tween dotween=transform.ToMove(Vector3 target,duration,true/false)//創建Tween對象
dotween.setAutoKill(false)//把自動銷毀創建的動畫的功能關閉
保存了創建的DTWeen動畫后,可以直接用transform.play()播放創建的動畫
transform.pause()//暫停動畫的播放
transform.DOplay()//播放動畫,播放完后銷毀動畫
transform.DOPlayforward()//正向播放動畫,播放完不銷毀動畫
transform.DOPlayBackword()//反向播放動畫,播放完不銷毀動畫
using UnityEngine; using DG.Tweening; public class DoMoveTo : MonoBehaviour { private bool isState = false; private Tween doTween; void Start () { doTween = transform.DOLocalMove(new Vector3(-70, 30, 1), 2.0f, true);//創建動畫 doTween.SetAutoKill(false);//把自動銷毀動畫的功能關閉 doTween.Pause();//暫停播放動畫 } void Update () { // DOTween.To(() => transform.position, x => transform.position = x, new Vector3(10, 10, 10), 2.0f); } public void Onbutton() { isState = !isState; if (isState) { transform.DOPlayForward();//正方向播放動畫 } else { transform.DOPlayBackwards();//反向播放動畫 } // transform.DOMove(); } }
4:transform.DoMoveX(5,1)//把當前物體的X軸坐標移動到5處,時間為1,使用插值運算移動的
transform.DoMoveX(5,1)//當前物體從Position(x+5,y,z)處,移動到Positiot(x,y,z)處,時間為1,也是用插值運算移動的。
transform.DoLocalMoveX(5,1)//移動物體是以局部坐標為准,移動將X軸移動到局部坐標5處
5:設置動畫的移動曲線 Tween.setEase()//設置動畫的運動曲線
Tween tween = transform.DOMoveX(5, 1); tween.SetEase(Ease.InBounce);//設置動畫的運動曲線
6:設置動畫的播放次數 Tween.SetLoops(-1)//設置動畫的播放次數,-1表示無限循環
Tween tween = transform.DOMoveX(5, 1); tween.SetEase(Ease.InBounce);//設置動畫的運動曲線 tween.SetLoops(-1);
7:Dotween中的一些常用事件
Tween tween=transform.Domove()
tween.SetAutoKill(false)//把自動銷毀創建的動畫的函數關閉,以后可以用tween來控制播放動畫
tween.OnKill(方法)//在自動銷毀創建的動畫結束時調用該方法。
tween.OnPlay(function)//每次播放創建的動畫時,都執行該方法
tween.OnStart(function)//只在第一次創建該動畫播放時調用該方法
tween.OnPause(function)//動畫被暫停時,調用該方法
tween.OnRewind(function)//動畫被重置時調用該方法
tween.OnComplete(function)//動畫播放結束時調用該方法。
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class DoMove : MonoBehaviour { private Tween tween; void Awake() { tween = transform.DOMoveX(5, 2);//創建動畫 tween.SetAutoKill(false);//把自動銷毀動畫的事件關閉 tween.OnPlay(PlayTest);//動畫播放就調用該函數 tween.OnStart(StartPlayTest);//動畫第一次播放時調用該函數 tween.OnComplete(PlayEndTest);//動畫播放時調用該函數 tween.OnPause(PauseTest);//動畫暫停時,調用該函數 tween.OnKill(DestoryTest);//動畫被銷毀時調用DestoryTest函數 tween.OnRewind(RewindTest);//動畫被重置 tween.SetEase(Ease.InBounce);//設置動畫的運動曲線 } void Start () { StartCoroutine("task"); //開啟協程 } public IEnumerator task() { yield return new WaitForSeconds(0.5f);//等待0.5f秒 tween.Pause();//暫停動畫 StartCoroutine("task1");//開啟協程task1() StopCoroutine("task");//關閉本協程 } public IEnumerator task1() { yield return new WaitForSeconds(1);//等待1f秒 tween.Play();//重新播放動畫 StartCoroutine("task2"); StopCoroutine("task1");//關閉本協程 } public IEnumerator task2() { yield return new WaitForSeconds(0.5f); tween.Rewind(); //動畫被重置 StopCoroutine("task2"); } void PlayEndTest() { print("動畫播放結束"); } void DestoryTest() { print("動畫被銷毀"); } void StartPlayTest() { print("動畫開始播放"); } void PlayTest() { print("動畫播放"); } void PauseTest() { print("動畫暫停"); } void RewindTest() { print("動畫被重置"); } }
注:SetAutokill()函數在動畫播放時被執行,這個函數是不起作用的
動畫播放完默認是暫停狀態(前提是動畫設置為不會自動銷毀),暫停狀態這個函數被執行也是不起作用的
該函數只有在動畫為播放前設置,才會在動畫播放結束時執行,在動畫播放時或動畫暫停時執行該函數都是不起作用的
如果動畫被重置,則之前還未執行的SetAutokill函數也是不起作用的
8:使用DoTween設置文字的顯示效果 DoText("要顯示的文字",duration)//將要顯示的文字在多少秒內一個一個顯示出來,清除當前位置的文字
using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TextTest : MonoBehaviour { private Text text; void Awake() { text = transform.GetComponent<Text>(); } void Start () { text.DOText("認真學習才是我們唯一的出路", 5.0f);//將文字一個一個在5秒中顯示在界面上,清除當前位置的文字 } }
9:改變物體的顏色和透明度
gameobject.DoColor(color.red ,2)// 把物體的顏色變成紅色用時2S
gameobject.DoFade(1,3)//把物體的透明度從0變成1,用時3秒
using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TextTest : MonoBehaviour { private Text text; void Awake() { text = transform.GetComponent<Text>(); } void Start () { text.DOText("認真學習才是我們唯一的出路", 5.0f);//將文字一個一個在5秒中顯示在界面上,清除當前位置的文字 text.DOColor(Color.blue, 2);//把字體顏色改為藍色,用時2秒 text.DOFade(1, 3);//把字體的透明度改為1,用時3秒 } }
10:利用DoTween制作震屏的效 果 其實本質上就是讓攝像機移動,讓我們感覺有震屏的效果。
先獲取Gameobject上的Camera組件,在利用Camera.DoShakePosition(duation,vector3)//讓攝像機在Vector3的方向上震動,時間為duation
Camera.DoShakeRotation(duration)//讓攝像機旋轉
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class Shake : MonoBehaviour { void Start () { Camera camera = transform.GetComponent<Camera>(); camera.DOShakePosition(2, new Vector3(5, 5, 0));//1秒內攝像機在x y軸上移動 camera.DOShakeRotation(2);//讓攝像機旋轉2秒 } }
11:動畫組件的可是化創建方式 添加DotweenAnimation腳本,在腳本面版上創建動畫
首先要確定創建什么動畫,在可選框中選擇創建的動畫
AutoPlay:創建的動畫是否能自動播放
AutoKill:動畫播放完是否銷毀動畫
設置創建的動畫為Move
Duration:設置動畫播放的時間
Delay:播放時延遲時間
Ease:動畫移動的曲線
Loops:動畫循環的次數
To:物體移動到的目標位置
Event:Onstart 動畫第一次播放時調用該事件綁定的方法
OnPlay()
OnUpdate()
OnStep()
OnComplete()
............這些時間的用法與上面的事件用法是相同的
12:動畫路徑編輯器:設置物體移動動畫的路徑 使用DoTweenPath腳本創建的
Shift+ctrl添加路徑點
Shift+alt取消路徑點
Tween Options:動畫的設置
Duration:動畫播放的時間
Delay:動畫播放的延遲時間
Ease:動畫的運動曲線
Update Type:動畫的更新方式
path Tween Options:動畫的路徑設置
Path Type:Linear 每一個路徑點連接用直線連接
Catmull Rom 每一個路徑點連接用曲線連接
Close Path:閉合路徑點,路徑起點與路徑終點連接到一起。
Local MoveMent:使用本地坐標進行移動
Lock Rotation:鎖定旋轉的軸
Orientation:設置物體移動時的朝向
To Path:物體移動時朝向路徑的前方
Look At Position:物體移動時正方向朝向設置的空間點
Look At Transform:物體移動時正方向設置為一直朝向一個物體
Path Editor Options:路徑點的設置
Relative:設置每個路徑點與物體相關,物體移動時所有的節點也一起移動
Color:設置路徑點連線的顏色
Show indexes:設置路徑點的下標
Show wps Lengths:顯示每個路徑點的長度
Handles Type:設置每個路徑點的朝向
Reset path:刪除所有節點
WaysPoints:詳細設置每個節點的坐標
event:這些事件的用法與前面的事件用法是一樣的