Unity Blend Tree動畫混合樹使用入門教程
介紹
在動畫與動畫的切換過程中,常因為兩個動畫之間的差距過大,而顯得動畫的切換很不自然。
這時候就需要動畫混合樹Blend Tree這個功能。使用混合樹可以將多個動畫混合在一起,例如在處理角色的移動中,走動畫與跑動畫切換的時候,在走動畫與跑動畫中生成多個過渡用的插值動畫以達到平滑得切換的功能。
創(chuàng)建混合樹
在Animator窗口的空白處右鍵,Create State > From New Blend Tree,然后雙擊Blend Tree進入混合樹。筆者使用的是unity2019.4的版本,現(xiàn)在混合樹有5種類型,可以在右側展開Blend Type看到。

分別為:
- 1D
- 2D Simple Directional
- 2D Freeform Directional
- 2D Freeform Cartesian
- Direct
1D
1D混合只有一個參數(shù),比如如果使用混合樹去制作人物從站立到走到跑的混合,就比較適合使用1D混合。右鍵點擊混合樹根節(jié)點,點擊Add Motion添加結點,或者直接在右側菜單點擊加號來添加動畫。

添加后

這里筆者添加了三個動畫。
第一個是idle,站立不動,只有微弱的呼吸起伏

第二個是run

第三個是帶著武器沖刺sprint的姿勢

根據(jù)threshold的不同,可以產(chǎn)生出不同的融合動畫效果
現(xiàn)在我們已知idle的threshold設定為0,run是0.5,sprint是1
參數(shù)是0到1,那我們就可以通過控制參數(shù)的大小來控制動畫的播放。
比如,我們現(xiàn)在要取一個介于sprint和run中的動畫,控制參數(shù)在0.5到1之間。
我們可以拖動上方的紅線,預覽融合后的動畫。
現(xiàn)在紅線的位置大約在0.75多一點的位置。

可以看到是介于上面圖二和圖三的某種動畫


這幅圖中倒數(shù)第二列,小表下面的1是控制動畫的播放速度,最后一列小人下面勾選的話,表示動畫鏡像播放。
之后我們就可以使用Animator.SetFloat(“Blend”,float a)來播放你想要播放的動畫。
2D
2D的三種融合方式,官方手冊上是這么說的
官方文檔關于2D融合樹的描述:
2D Simple Directional:最好在運動表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄準”、“向下瞄準”、“向左瞄準”和“向右瞄準”)時使用。根據(jù)需要可以包括位置 (0, 0) 處的單個運動,例如“空閑”或“瞄準”。在 Simple Directional 類型中,在同一方向上_不_應該有多個運動,例如“向前走”和“向前跑”。
2D Freeform Directional:運動表示不同方向時,也使用此混合類型,但是您可以在同一方向上有多個運動,例如“向前走”和“向前跑”。在 Freeform Directional 類型中,運動集應始終包括位置 (0, 0) 處的單個運動,例如“空閑”。
2D Freeform Cartesian:最好在運動不表示不同方向時使用。憑借 Freeform Cartesian,X 參數(shù)和 Y 參數(shù)可以表示不同概念,例如角速度和線速度。一個示例是諸如“向前走不轉彎”、“向前跑不轉彎”、“向前走右轉”、“向前跑右轉”之類的運動。

區(qū)別于1D融合樹,2D的融合樹參數(shù)變成兩個。Pos X和Pos Y
紅點表示參數(shù)當前的值,灰點托入動畫會變成藍點。當參數(shù)點紅點離某個藍點越近,動畫就越趨向于表現(xiàn)此藍點的值。
查閱了一些文章,還是沒有徹底搞懂這三種融合方式的區(qū)別,但是就現(xiàn)在的了解程度來說:
當這個player進行前后左右移動四種動畫,但是player本身的朝向并不改變的話,可以使用2D Simple Directional,將紅點放置在(0,0),四個動畫分別放在上下左右。通過獲取Vertical和horizantol的值去改變pos Y和pos X的大小。
當這個player要進行相對復雜的運動,比如轉身,左前傾,右前傾等等??梢允褂?D Freeform Cartesian,即一個參數(shù)表示移動速度,一個參數(shù)表示轉向這種感覺。
Direct
精確控制所混合的各種動畫而不是只使用一個或兩個參數(shù)來間接混合
比如人物從某一個表情到某一個表情的過渡動畫,就由direct模式制作。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
快速了解如何在.NETCORE中使用Generic-Host建立主機
這篇文章主要介紹了如何在.NETCORE中使用Generic-Host建立主機,文中代碼非常詳細,可供大家參考,感興趣的朋友不妨閱讀完2020-05-05
C# 使用multipart form-data方式post數(shù)據(jù)到服務器
這篇文章主要介紹了C# 使用multipart form-data方式post數(shù)據(jù)到服務器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08

