最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

DOTWeen插件使用技巧

2018-10-11 17:16 作者:皮皮關(guān)做游戲  | 我要投稿

作者:四五二十


大家好。

書記先致歡迎詞

今天我們一起來(lái)研究一下DOTween動(dòng)畫插件。

對(duì)于該插件官網(wǎng)上的介紹是:“DOtween是一種快速,高效,完全類型安全的面向?qū)ο蟮膭?dòng)畫引擎?!?/p>

將它導(dǎo)入U(xiǎn)nity中,可以很方便快速地幫我們完成許多動(dòng)畫效果。本篇文章主要將通過一些小案例來(lái)介紹DOTween的使用方法和主要功能。


DOTween導(dǎo)入:

打開Unity創(chuàng)建一個(gè)新工程,將下載好的DOTween插件直接拖入Project面板:


基本用法

一.移動(dòng)動(dòng)畫

創(chuàng)建一個(gè)小球,位置設(shè)為世界坐標(biāo)原點(diǎn)(0,0,0),掛上此腳本:

using DG.Tweening; //引入命名空間

public class DOTWeenTest : MonoBehaviour

{

? void Start()

??? {

??????? transform.DOMove(new Vector3(4, 3, 0), 3); //腳本物體3秒從當(dāng)前位置移動(dòng)到世界坐標(biāo)(4,3,0)位置

??? }

}

?


我們發(fā)現(xiàn),使用的DOTween插件后,transform居然能夠點(diǎn)出DOMove方法,這是因?yàn)镃#的拓展性,使其和Unity的一些類能產(chǎn)生鏈接,是不是感覺很神奇。因?yàn)檫@些特性,使我們?cè)谑褂闷饋?lái)非常簡(jiǎn)單易懂,想讓哪個(gè)物體動(dòng),就讓它的transform組件來(lái)調(diào)用DOTWeen的方法就可以了。

DOMove相關(guān)方法:

世界坐標(biāo)上移動(dòng):transform.DOMove

本地坐標(biāo)上移動(dòng):transform.DOLocalMove

世界坐標(biāo)的X軸上移動(dòng):transform.DOMoveX

本地坐標(biāo)的X軸上移動(dòng):transform.DOLocalMoveX


通過以上的方法,我們學(xué)會(huì)了制作移動(dòng)動(dòng)畫,但這個(gè)動(dòng)畫會(huì)自動(dòng)播放,并且,播放完了就銷毀了,不能重復(fù)使用,后面我們會(huì)通過一些設(shè)置來(lái)避免。

二.From()方法的使用

2秒時(shí)間從世界坐標(biāo)(2,2,0)處回到自身當(dāng)前位置:

transform.DOMove(new Vector3(2, 2, 0), 1).From();


三.動(dòng)畫正放與倒放

1.場(chǎng)景中創(chuàng)建兩個(gè)按鈕,來(lái)控制動(dòng)畫的播放順序:

2.為小球掛上腳本:

using DG.Tweening; //引入命名空間

public class DOTWeenTest : MonoBehaviour

{

??? Tweener twe; //聲明一個(gè)Tweener對(duì)象

??? void Start()

??? {

??????? twe = transform.DOMove(new Vector3(3, 4, 0), 2);//將動(dòng)畫保存在Tweener對(duì)象中

??????? twe.Pause();//暫停,防止自動(dòng)播放?

??????? twe.SetAutoKill(false);//關(guān)閉動(dòng)畫自動(dòng)銷毀?

??? }

??? //創(chuàng)建兩個(gè)方法事件,控制前放后倒放

??? public void Forward()

??? {

??????? twe.PlayForward(); //該動(dòng)畫正放

??? }

??? public void Back()

??? {

??????? twe.PlayBackwards(); //該動(dòng)畫倒放

??? }

}

?3.將兩個(gè)方法分別掛在各自按鈕上,運(yùn)行程序:


其它方法:

Pause(): 暫停動(dòng)畫

SetLoops(3): 循環(huán)3次

四.設(shè)置動(dòng)畫曲線

在以上我們展示的動(dòng)畫效果中我們,我們通過觀察可以看到,物體在播放移動(dòng)動(dòng)畫時(shí)速度是由快到慢(倒放除外),這種現(xiàn)象是由動(dòng)畫播放時(shí)的動(dòng)畫曲線決定的,我們是可以通過修改動(dòng)畫曲線來(lái)改變物體動(dòng)畫效果的,比如我們可以將運(yùn)動(dòng)效果改成由慢到快:

void Start()

{

??? Tweener twe = transform.DOMoveX(5, 2); //3秒時(shí)間在世界坐標(biāo)中,讓X軸移動(dòng)到5的位置

??? twe.SetEase(Ease.InCubic); //由慢到快

}

?

而動(dòng)畫曲線的種類非常多,可以自己去試試看:

五.使用動(dòng)畫改變顏色

既然讓物體移動(dòng)是通過使用transform來(lái)點(diǎn)出DOTWeen的方法,那改變顏色就是讓材質(zhì)組件來(lái)調(diào)用DOTWeen的方法即可:


void Start()

{

??? Material material = GetComponent<MeshRenderer>().material;

??? material.DOColor(Color.red, 3); //3秒變紅

}

?

?六.動(dòng)畫事件

Material material;

Tweener twe;

void Start()

{

??? material = GetComponent<MeshRenderer>().material;

??? twe = material.DOColor(Color.red, 3); //3秒變紅

??? twe.OnComplete(ChangeColour); //動(dòng)畫播放結(jié)束時(shí)調(diào)用

}

void ChangeColour() //變色

{

??? twe = material.DOColor(Color.blue, 2); //2秒變藍(lán)

}

?



動(dòng)畫事件相關(guān)方法:

OnStart: 動(dòng)畫第一次播放時(shí)調(diào)用

OnPlay: 動(dòng)畫每次從暫停狀態(tài)解除時(shí)調(diào)用(包括初次播放)

Pause: 動(dòng)畫暫停時(shí)調(diào)用一次

OnUpdate: 動(dòng)畫播放過程中每幀調(diào)用

OnStepComplete: 每次動(dòng)畫播放結(jié)束時(shí)調(diào)用(受循環(huán)次數(shù)影響)

OnComplete: 每次動(dòng)畫播放結(jié)束時(shí)調(diào)用(不受循環(huán)次數(shù)影響,且倒放時(shí)不適用)

七.文本動(dòng)畫

1.讓文本逐字顯示:

使用UGUI創(chuàng)建一個(gè)Text,掛上該腳本:

void Start()

{

??? Text text = GetComponent<Text>();

??? text.DOText("最心愛的情人,卻傷害我最深,為什么你背著我愛別人", 5); //5秒時(shí)間將這段文字逐字顯示

??? text.DOColor(Color.green, 5); //顏色逐漸變綠

}

?

我們可以結(jié)合剛才講到的動(dòng)畫事件,來(lái)組一個(gè)連續(xù)的文字顯示:

代碼如下:

void Start()

?{

???? Text text = GetComponent<Text>();

???? Tweener twe = text.DOText("下面是有獎(jiǎng)競(jìng)猜:", 2);

???? twe.OnComplete(() =>

???? {

???????? text.text = "";

???????? text.DOText("富奸老賊是怎么死的?", 2);

???? });

?}

?

2.讓文本逐漸顯示:

首先要讓文字調(diào)成完全透明狀態(tài):

掛上腳本運(yùn)行程序:

void Start()

{

??? Text text = GetComponent<Text>();

??? text.DOFade(1, 2); //2秒時(shí)間讓A值變?yōu)?

}

?

八.屏幕抖動(dòng)動(dòng)畫:

很多游戲中經(jīng)常會(huì)用到的效果,比如在戰(zhàn)斗的時(shí)候,主角被攻擊會(huì)伴隨著一陣屏幕抖動(dòng),然后

以此來(lái)提高游戲打擊感,其實(shí)所謂的屏幕抖動(dòng)其實(shí)就是攝像機(jī)位置的抖動(dòng),還是離不開Transform動(dòng)畫:

void Start()

?{

???? //transform.DOShakePosition(2); //在隨機(jī)方向震動(dòng)2秒,幅度默認(rèn)為1

???? transform.DOShakePosition(2, 3); //在隨機(jī)方向震動(dòng)3秒,振幅為3

?}

?

將這個(gè)腳本掛攝像機(jī)上,運(yùn)行程序:

或者:

void Start()

?{

???? //transform.DOShakePosition(2); //在隨機(jī)方向震動(dòng)2秒,幅度默認(rèn)為1

???? //transform.DOShakePosition(2, 3); //在隨機(jī)方向震動(dòng)2秒,振幅為3

???? transform.DOShakePosition(3, new Vector3(0, 2, 0));//只在世界坐標(biāo)Y軸上震動(dòng)3秒,振幅為2

?}

?

抖動(dòng)動(dòng)畫不僅有位置上的抖動(dòng),還有選擇上的抖動(dòng)和縮放上的抖動(dòng):

旋轉(zhuǎn)抖動(dòng): transform.DOShakeRotation

縮放抖動(dòng): transform.DOShakeScale

我們來(lái)看下縮放抖動(dòng)是什么效果:

創(chuàng)建一個(gè)腳本掛在一個(gè)Cube上:

void Start()

{

??? transform.DOShakeScale(2, new Vector3(3, 2, 0));

}

?

九.可視化編輯

除了使用腳本來(lái)播放DOTween動(dòng)畫外,該插件還擁有可視化編輯的功能。

動(dòng)畫編輯器

1.為需要做動(dòng)畫的物體添加DoTweenAnimation組件:


直接點(diǎn)擊可以進(jìn)行打開或關(guān)閉


2.選擇要做動(dòng)畫的組件:

這里面就包括了我們之前介紹的移動(dòng),變色,抖動(dòng),文字顯示等功能。

3.當(dāng)要做動(dòng)畫的組件不存在時(shí)則報(bào)錯(cuò),非常方便:

該物體上沒有Text組件。

4.各種參數(shù):

5.當(dāng)在編輯器關(guān)閉了自動(dòng)播放后,使用代碼播放:

public DOTweenAnimation a; //在編輯器界面將掛有該組件的物體拖進(jìn)來(lái)

void Start()

{

??? a.DOPlayForward();

}

?

6.如果不使用代碼,使用點(diǎn)擊按鈕播放,在按鈕的事件窗口將物體拖進(jìn)去,找到DoTweenAnimation組件,調(diào)用播放方法:

路徑編輯器

使用該組件可以做一些尋路的效果:

1.場(chǎng)景中創(chuàng)建一個(gè)Cube,添加DoTweenPath組件:

2.運(yùn)行程序:

十.結(jié)語(yǔ)

以上簡(jiǎn)單介紹了DOTWeen的常用技巧,但可以肯定的是,DOTWeen是一個(gè)非常強(qiáng)大的工具,還有很多潛力在我這篇文章中沒有挖掘出來(lái),大家下來(lái)可以自行進(jìn)行更深層次的研究。


是不是感覺少了點(diǎn)什么?

想系統(tǒng)學(xué)習(xí)游戲開發(fā)的童鞋,歡迎訪問?http://levelpp.com/? ? ? ??????

游戲開發(fā)攪基QQ群:869551769? ? ? ? ??????

微信公眾號(hào):皮皮關(guān)

DOTWeen插件使用技巧的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阳春市| 龙南县| 庆云县| 酒泉市| 昌吉市| 铅山县| 宜良县| 寿宁县| 澜沧| 眉山市| 曲松县| 静海县| 泗洪县| 黄大仙区| 凤冈县| 齐河县| 凤山县| 闸北区| 平安县| 青阳县| 扎鲁特旗| 潍坊市| 买车| 徐州市| 防城港市| 淄博市| 枝江市| 天峨县| 长丰县| 房山区| 临海市| 安阳县| 武安市| 龙门县| 仁寿县| 阿瓦提县| 封开县| 元阳县| 都匀市| 万州区| 宜春市|