1. 程式人生 > >全面解析Unity動畫系統

全面解析Unity動畫系統

動畫融合

首先需要將角色的動畫型別設定為Humanoid(確保下文的Avatar Mask相匹配)
在開啟Animator視窗後,為角色新增一個預設動畫,在這裡給的是一個跑動動畫
運行遊戲,此時僅僅是個跑動動畫
在這裡的需求是,下半身依舊保持跑動狀態,上半身處於攻擊狀態,這裡就使用到了動畫的融合(當然可以要求美術來完成,但是使用動畫融合可以幫助我們來解決這一需求)
首先新增一個Layer,併為該層也新增上一個預設動畫,在這裡給的是一個攻擊動畫
接下來在Project面板上建立一個Avatar Mask(Mask中文意思:面具) 點選剛建立的Avatar Mask,編輯需要Mask的部分

將其新增到New Layer下的Mask下,並將其權重設定成1,意思是該層動畫優先,但是由於Mask了下半身,所以動畫的上半身預設動畫為攻擊動畫
運行遊戲,發現動畫完美融合,符合我們一開始的需求(下半身依舊保持跑動狀態,上半身處於攻擊狀態)

動畫重定向

首先介紹什麼是動畫重定向? 簡單的說就是完成一套動畫在其他模型上覆用 比如一個人類模型的跑動動畫想在一怪獸模型上使用,使怪獸模型可以按人類的跑動動畫進行跑動 由於這兩個模型骨骼結構在建模時候不徑相同,所以直接將人類跑動動畫拖到怪獸上很有可能無法複用 但是Unity幫我們解決了這個問題 首先需要將這兩個模型的動畫型別都設定為Humanoid

點選Configure,使骨骼與Unity系統的標準骨骼匹配後點擊Apply Unity會自動為模型生成Avatar,按Unity標準骨骼位置記錄該模型的骨骼位置資訊 這樣Unity通過Avatar這個紐帶將兩者骨骼進行了複用

根骨骼動畫

在建模的時候,有些動畫播放後發生的位置、方向偏轉 再Unity預設情況下是使用了根骨骼動畫的 在有些模型的Idel動畫在播放後發生了位移後旋轉,在遊戲迴圈播放Idle動畫後,累計了這些位移或旋轉其效果可想而知 所以在這種情況下,需要關閉這些骨骼動畫 第一種方法是,按自己的需求,將下圖的3個框打勾
也有個總開關,在例項物件的Animator屬相,將Apply Root Motion勾去掉

動作Mask

這個知識點很簡單,但是挺實用的 和上文動畫融合中的Avatar Mask操作類似,但是作用不徑相同 動畫融合中的Avatar Mask是在兩個或多個動畫進行融合時使某一層的動畫的某個部位動作取消,該取消部位可以和其他層的動畫進行融合
但是動作Mask僅僅指該動畫Clip的某些部位動畫取消 可能不容易解釋清楚 接下來我接收動作Mask的操作方法
如果你也想像我上圖中一個可以直接選擇取消部位的話,將模型動畫模式改為Humanoid即可

動作Event

該部分也是操作簡單,但是使用率很大 在我們播放任務動作時,當動畫執行到某一幀時,想播放一個攻擊特效 此時我們可以為這一幀設定一個Event 意思就是說,當我們動畫執行到這一幀後將觸發自定義是Event函式 點選模型Animation,找到Event,可以為Event新增函式名,引數(4種引數選擇一個)
在呼叫時,只需要在播放動畫的Gameobject掛載一個含有函式名一致的的指令碼即可呼叫該方法 本文介紹到這裡了,更多內容:blog.liujunliang.com.cn