Unity筆記-Animator動畫層、骨骼與權(quán)重
Animator動畫層
動畫層主要用來做同一時間角色的身體各個部分播放不同的動畫的效果,例如在射擊游戲中角色可以移動射擊,下半身播放移動動畫,上半身播放射擊動畫。
我們可以通過點擊Animator窗口 - Layers界面右上角的加號添加一個動畫層。
如果沒有這個窗口,可以通過Unity頂部的?Window菜單 - Animator選項?來打開這個窗口

骨骼
在新建了動畫層以后,我們還需要一個 AvatarMask?來確定這個動畫層有哪些骨骼會播放動畫
在 Project 窗口右鍵 - Create - AvatarMask 創(chuàng)建一個 AvatarMask

點擊新建的 AvatarMask,在 Inspector 窗口展開 Humanoid 項,就可以調(diào)整這個??AvatarMask?會影響到哪些骨骼,如果只需要上半身播放這一層的動畫,就只把上半身的骨骼選中,變成綠色。

確定好骨骼以后,在 Animator - Layer 中點擊動畫層的設(shè)置按鈕,將剛才的 AvatarMask?填入到 Mask 項中即可。

權(quán)重
在設(shè)置 AvatartMask?的時候,我們能在設(shè)置界面看到 Weight?項,權(quán)重決定了動畫具體要播放到什么程度,0為不播放,1為完全播放。

另外,Blending?項的兩個值,Overide?和?Additive?決定了這一層的動畫如何與上層動畫進行混合.
Overide?表示完全覆蓋上層的動畫,僅播放本層的動畫,如果 Avatar Mask 設(shè)置了全身骨骼,所有的骨骼動畫都會覆蓋上層動畫,如果只有部分的骨骼,則僅覆蓋設(shè)置的骨骼進行動畫。并且,在列表中的動畫層越往下的優(yōu)先級越高,如果有多個動畫層并且權(quán)重都是1,僅會播放最下層的動畫。
Additive?表示加在上層動畫,兩層動畫會進行混合運算并播放。
在知道了這些以后,我們就可以通過代碼來控制動畫層的切換,配合狀態(tài)機使用,在切換到對應(yīng)的狀態(tài)時將動畫層的權(quán)重設(shè)為1,退出狀態(tài)時權(quán)重設(shè)為0。
不過Animator的函數(shù)?SetLayerWeight 只能通過 index?來設(shè)置動畫層權(quán)重,但是可以使用GetLayerIndex 函數(shù)通過動畫層的名字來獲得對應(yīng)的 index。
參考視頻

參考文章
Unity動畫系統(tǒng)詳解7:Layer是什么? - 洪智的文章 - 知乎 https://zhuanlan.zhihu.com/p/156731741