Unity Blend Tree動(dòng)畫(huà)混合樹(shù)使用入門教程
介紹
在動(dòng)畫(huà)與動(dòng)畫(huà)的切換過(guò)程中,常因?yàn)閮蓚€(gè)動(dòng)畫(huà)之間的差距過(guò)大,而顯得動(dòng)畫(huà)的切換很不自然。
這時(shí)候就需要動(dòng)畫(huà)混合樹(shù)Blend Tree這個(gè)功能。使用混合樹(shù)可以將多個(gè)動(dòng)畫(huà)混合在一起,例如在處理角色的移動(dòng)中,走動(dòng)畫(huà)與跑動(dòng)畫(huà)切換的時(shí)候,在走動(dòng)畫(huà)與跑動(dòng)畫(huà)中生成多個(gè)過(guò)渡用的插值動(dòng)畫(huà)以達(dá)到平滑得切換的功能。
創(chuàng)建混合樹(shù)
在Animator窗口的空白處右鍵,Create State > From New Blend Tree,然后雙擊Blend Tree進(jìn)入混合樹(shù)。筆者使用的是unity2019.4的版本,現(xiàn)在混合樹(shù)有5種類型,可以在右側(cè)展開(kāi)Blend Type看到。
分別為:
- 1D
- 2D Simple Directional
- 2D Freeform Directional
- 2D Freeform Cartesian
- Direct
1D
1D混合只有一個(gè)參數(shù),比如如果使用混合樹(shù)去制作人物從站立到走到跑的混合,就比較適合使用1D混合。右鍵點(diǎn)擊混合樹(shù)根節(jié)點(diǎn),點(diǎn)擊Add Motion添加結(jié)點(diǎn),或者直接在右側(cè)菜單點(diǎn)擊加號(hào)來(lái)添加動(dòng)畫(huà)。
添加后
這里筆者添加了三個(gè)動(dòng)畫(huà)。
第一個(gè)是idle,站立不動(dòng),只有微弱的呼吸起伏
第二個(gè)是run
第三個(gè)是帶著武器沖刺sprint的姿勢(shì)
根據(jù)threshold的不同,可以產(chǎn)生出不同的融合動(dòng)畫(huà)效果
現(xiàn)在我們已知idle的threshold設(shè)定為0,run是0.5,sprint是1
參數(shù)是0到1,那我們就可以通過(guò)控制參數(shù)的大小來(lái)控制動(dòng)畫(huà)的播放。
比如,我們現(xiàn)在要取一個(gè)介于sprint和run中的動(dòng)畫(huà),控制參數(shù)在0.5到1之間。
我們可以拖動(dòng)上方的紅線,預(yù)覽融合后的動(dòng)畫(huà)。
現(xiàn)在紅線的位置大約在0.75多一點(diǎn)的位置。
可以看到是介于上面圖二和圖三的某種動(dòng)畫(huà)
這幅圖中倒數(shù)第二列,小表下面的1是控制動(dòng)畫(huà)的播放速度,最后一列小人下面勾選的話,表示動(dòng)畫(huà)鏡像播放。
之后我們就可以使用Animator.SetFloat(“Blend”,float a)來(lái)播放你想要播放的動(dòng)畫(huà)。
2D
2D的三種融合方式,官方手冊(cè)上是這么說(shuō)的
官方文檔關(guān)于2D融合樹(shù)的描述:
2D Simple Directional:最好在運(yùn)動(dòng)表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄準(zhǔn)”、“向下瞄準(zhǔn)”、“向左瞄準(zhǔn)”和“向右瞄準(zhǔn)”)時(shí)使用。根據(jù)需要可以包括位置 (0, 0) 處的單個(gè)運(yùn)動(dòng),例如“空閑”或“瞄準(zhǔn)”。在 Simple Directional 類型中,在同一方向上_不_應(yīng)該有多個(gè)運(yùn)動(dòng),例如“向前走”和“向前跑”。
2D Freeform Directional:運(yùn)動(dòng)表示不同方向時(shí),也使用此混合類型,但是您可以在同一方向上有多個(gè)運(yùn)動(dòng),例如“向前走”和“向前跑”。在 Freeform Directional 類型中,運(yùn)動(dòng)集應(yīng)始終包括位置 (0, 0) 處的單個(gè)運(yùn)動(dòng),例如“空閑”。
2D Freeform Cartesian:最好在運(yùn)動(dòng)不表示不同方向時(shí)使用。憑借 Freeform Cartesian,X 參數(shù)和 Y 參數(shù)可以表示不同概念,例如角速度和線速度。一個(gè)示例是諸如“向前走不轉(zhuǎn)彎”、“向前跑不轉(zhuǎn)彎”、“向前走右轉(zhuǎn)”、“向前跑右轉(zhuǎn)”之類的運(yùn)動(dòng)。
區(qū)別于1D融合樹(shù),2D的融合樹(shù)參數(shù)變成兩個(gè)。Pos X和Pos Y
紅點(diǎn)表示參數(shù)當(dāng)前的值,灰點(diǎn)托入動(dòng)畫(huà)會(huì)變成藍(lán)點(diǎn)。當(dāng)參數(shù)點(diǎn)紅點(diǎn)離某個(gè)藍(lán)點(diǎn)越近,動(dòng)畫(huà)就越趨向于表現(xiàn)此藍(lán)點(diǎn)的值。
查閱了一些文章,還是沒(méi)有徹底搞懂這三種融合方式的區(qū)別,但是就現(xiàn)在的了解程度來(lái)說(shuō):
當(dāng)這個(gè)player進(jìn)行前后左右移動(dòng)四種動(dòng)畫(huà),但是player本身的朝向并不改變的話,可以使用2D Simple Directional,將紅點(diǎn)放置在(0,0),四個(gè)動(dòng)畫(huà)分別放在上下左右。通過(guò)獲取Vertical和horizantol的值去改變pos Y和pos X的大小。
當(dāng)這個(gè)player要進(jìn)行相對(duì)復(fù)雜的運(yùn)動(dòng),比如轉(zhuǎn)身,左前傾,右前傾等等??梢允褂?D Freeform Cartesian,即一個(gè)參數(shù)表示移動(dòng)速度,一個(gè)參數(shù)表示轉(zhuǎn)向這種感覺(jué)。
Direct
精確控制所混合的各種動(dòng)畫(huà)而不是只使用一個(gè)或兩個(gè)參數(shù)來(lái)間接混合
比如人物從某一個(gè)表情到某一個(gè)表情的過(guò)渡動(dòng)畫(huà),就由direct模式制作。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中將ListView中數(shù)據(jù)導(dǎo)出到Excel的實(shí)例方法
首先 你需要添加引用Microsoft Excel 11.0 Object Library2013-04-04舉例講解C#中自動(dòng)實(shí)現(xiàn)的屬性
這篇文章主要介紹了C#中自動(dòng)實(shí)現(xiàn)的屬性,包括使用自動(dòng)實(shí)現(xiàn)的屬性實(shí)現(xiàn)輕量類的方法,需要的朋友可以參考下2016-01-01C#實(shí)現(xiàn)鬧鐘AlarmClock實(shí)例代碼
這篇文章主要介紹了C#實(shí)現(xiàn)鬧鐘AlarmClock實(shí)例代碼,很實(shí)用的功能,需要的朋友可以參考下2014-08-08C# Email發(fā)送郵件 對(duì)方打開(kāi)郵件可獲得提醒
這篇文章主要為大家詳細(xì)介紹了C# Email發(fā)送郵件功能,對(duì)方打開(kāi)通知你,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11無(wú)法從 int? 轉(zhuǎn)換為 int 運(yùn)行時(shí)出現(xiàn)錯(cuò)誤
無(wú)法從"int?"轉(zhuǎn)換為"int" ,在運(yùn)行時(shí)會(huì)出現(xiàn)錯(cuò)誤,通過(guò)強(qiáng)制類型轉(zhuǎn)換(int)便可解決2014-05-05