Unity插件DoTWeen學


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:這些事件的用法與前面的事件用法是一樣的


免責聲明!

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



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