1. 程式人生 > >關於Unity中DOTween插件的使用(專題一)

關於Unity中DOTween插件的使用(專題一)

span date 賽車 ted rotate 技術 刪除 動畫 forward

DOTween

flash裏面的一個概念叫補間動畫,DOTween就是幹這個事情的。

補間動畫:在1秒鐘之內從A點移動到B點,在這個之間會把動畫補間補好。

當我們安裝好DOTween後,它就會提供很多補間的功能方便我們使用。當我們安裝了這個插件以後,我們就可以快速使用代碼來生成補間動畫。

例子:賽車選擇界面,旋轉賽車後有一個慢慢回彈的動畫效果。

安裝DOTween
1: 去網站http://dotween.demigiant.com/getstarted.php下載
2: 將DOTween解壓後復制到項目的任意目錄下(Editor, Plugins or Resources除外);
3: 運行DOTween的Setup: 菜單欄的 Tools/Demigiant;
4: 在代碼裏面 加上 DOTween的名字空間 using DG.Tween;
5: 安裝完DOTween插件後,很多組件能夠支持Tween;

DOTween對組件的擴展

1: 其他的組件擴展了Tween接口: 詳情見文檔:
http://dotween.demigiant.com/documentation.php
  AudioMixer
  AudioSource
  Camera
  Light
  Material:
  Rigidbody:
  Rigidbody2D:
  Transfrom
2: 例如Transfrom組件:
  (1)組件實例.DOMove: 平移;
  (2)組件實例.DOScale: 縮放;
  (3)組件實例.DORotate 旋轉;

Tweener常用操作

1: 常用的播放控制函數
  組件實例.DOPause(); 暫停一個Tween;
  組件實例.DOPlay/DOPlayBackwards/DOPlayForward; 播放
  組件實例.DOKill; // 殺掉Tween;

2:設置循環次數 t.SetLoop(); -1:為一直循環;
5: Tweener 常用的事件:
  (1)OnStart();
  (2)OnComplete();
  (3)OnKill();
  (4)OnUpdate();

DOTween實例

1.創建Unity項目

2.解壓下載的DOTween_1_1_620_hc.zip,復制文件夾到Unity項目目錄的根目錄下,根據提示點Setup DOTween,完成後多出兩個文件夾

技術分享

3.再創建Scripts和Scenes文件夾,保存場景

4.創建一個立方體Cube,再創建一個腳本dotween_use

 打開dotween_use

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // 添加這個DOTween所在的名字空間

public class dotween_use : MonoBehaviour {

    //開始播放前所調用的函數
    void on_tween_start()
    {
        Debug.Log("on_tween_start");
    }

    //結束播放後所調用的函數
    void on_tween_end()
    {
        Debug.Log("on_tween_end");
    }

    // Use this for initialization
    void Start () {
        // 創建一個補間動畫,在5秒之內移動到目標點,會慢慢停下來,不會很生硬的那種
        //Tweener t = this.transform.DOMove(new Vector3(0, 0, 10), 5.0f);//對象t會自動刪除

        //創建一個補間動畫,在5秒之內不斷縮小,縮小到沒有
        //t = this.transform.DOScale(new Vector3(0, 0, 0), 5.0f);

        //創建一個補間動畫,在3秒之內繞Y軸旋轉145度
        Tweener t = this.transform.DORotate(new Vector3(0, 145, 0), 3.0f);//這個Vector3(0, 145, 0)是歐拉角,和Unity編輯器裏面是一樣的
                                                                                                            //也有用四元素作為參數的旋轉函數

        t.SetLoops(4); //循環播放4次, -1無限制循環播放,每次播放都是重頭開始
        // this.transform.DOPause(); // 暫停播放;
        // this.transform.DOPlay(); // 開始播放;
        // this.transform.DOKill(); // 移除補間動畫;

        t.OnStart(this.on_tween_start); // 在動畫播放前調用事件

        t.OnComplete(this.on_tween_end); // 大寫(一般用這個),在動畫播放後調用事件
        //t.onComplete += this.on_tween_end;//小寫,是委托,也是在動畫播放後調用事件,效果一樣

    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

5.運行的時候會多出這兩個節點,不能刪除或者隱藏,否則DOTween動畫將停下來

技術分享

Sequence隊列

1: 創建一個隊列容器: DOTween.Sequence()
2: 將Tween加入到容器隊列 seq.Append(tween);
3: SetLoops():設置隊列容器的循環次數;
4: Insert: 插入一個並行的Tween;

Sequence實例

1.創建Unity項目

2.解壓下載的DOTween_1_1_620_hc.zip,復制文件夾到Unity項目目錄的根目錄下,根據提示點Setup DOTween,完成後多出兩個文件夾

3.再創建Scripts和Scenes文件夾,保存場景

4.創建一個立方體Cube,再創建一個腳本dotween_use

 打開dotween_use

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // 添加這個DOTween所在的名字空間

public class dotween_use : MonoBehaviour {

    // Use this for initialization
    void Start () {
        // 隊列容器
        // (1)創建一個隊列
        Sequence seq = DOTween.Sequence();
        // (2)將一個Tweener對象放到隊列的後面
        seq.Append(this.transform.DOMoveX(10, 5.0f));//在5秒之內移動到目標點
        seq.Append(this.transform.DOMoveX(0, 5.0f));//在5秒之內移動到原點
        seq.SetLoops(-1);//無限循環播放

        // 插入一個Tweener對象到隊列的某一個時刻,這裏時刻是0
        seq.Insert(0, this.transform.DOScale(new Vector3(2, 2, 2), 5.0f));//從0秒開始,在5秒內不斷放大到兩倍

    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

Ease緩動效果

1: Tweener設置緩動動畫:
SetEase(效果類型);
2: 效果類型:
OutBack: 快速移動超出目標,然後慢慢回到目標點;
.....

Ease緩動效果案例

1.創建Unity項目

2.解壓下載的DOTween_1_1_620_hc.zip,復制文件夾到Unity項目目錄的根目錄下,根據提示點Setup DOTween,完成後多出兩個文件夾

3.再創建Scripts和Scenes文件夾,保存場景

4.創建一個立方體Cube,再創建一個腳本dotween_use

 打開dotween_use

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; // 添加這個DOTween所在的名字空間

public class dotween_use : MonoBehaviour {

    // Use this for initialization
    void Start () {
        //緩動效果
        Tweener t = this.transform.DORotate(new Vector3(0, 270, 0), 3.0f);//在3秒之內繞Y軸旋轉270度
        t.SetEase(Ease.OutBack);//添加一個回彈的效果,還有很多的效果可以Ease.XXX裏面查找,選中Ease按F12

        //this.transform.DOMoveX(4, 3.0f).SetEase(Ease.OutBack);//有回彈效果的移動
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

註意:

每次按某個函數的F12的時候,發現我們實際使用的函數參數其實並沒有完整,實際上我們沒有填的參數系統會用默認的參數來填充,所以只要填有用的就函數參數就好了。

關於Unity中DOTween插件的使用(專題一)