【Unity】動畫系統簡單介紹

http://blog.csdn.net/u014635337/article/details/46918953ide

Animator是unity新的動畫系統,除了基本的播放動畫功能以外,還提供了更強大的其它功能
函數

基本篇oop

1新建AnimatorController,將動做拖到AnimatorController,將動做作連線,新建狀態值,設置連線經過條件的狀態值動畫

2代碼使用SetInteger("變量名",值) SetFloat  SetBool等設置狀態值,實現動做的切換,動做切換時有動做融合效果spa

3兩個動做之間沒有連線時,即便改變狀態值,也沒法切換動做.net

4當anystate與目標動做連線時,無視當前動做是否與目標動做連線,只要anystate與目標動做的條件成立,立擊切換到目標動做orm

5兩兩動做互相連線與anystate與全部動做連線,播放的區別是,anystate切換到目標動做時,沒有動做融合,動做之間連線切換有動做融合blog

6設置動做的幀事件,前提是要把有AnimatorController的預製拖到面板上,選中對像,ctrl+6打開動做面板,編輯好幀事件後選擇回調函數,幀事件回調函數只能選擇以AnimationEvent 爲參數的函數,而且函數不能是公有且是重載的函函數教程

若是是循環動做,幀事件會每播一遍就會調用一次,若是不是循環動做,只會調用一次遊戲

除此以外基礎部分很少說,網上不少教程


下面是Animator的是一些其它使用方法,可能在新的動畫系統中並不起眼,也不經常使用,但其實很是有用

Play("動做名")

Play(動做名hash值)

直接播放動做,不會作動做融合,即便有狀態機的連線,徹底忽略狀態機,有重載方法,能夠指定層,也能夠指定目標動做在原動做進行到什麼時候開始


CrossFade("動做名",融合時間)

CrossFade(動做名hash值,融合時間)

動做融合,融合時間持續多久徹底過渡到目標動做,跟狀態機無關,有重載方法,能夠指定層,也能夠指定目標動做在原動做進行到什麼時候開始

指定層時-1與0層都是baselayer,但使用GetCurrentAnimatorStateInfo不能使用-1

方法不會將normalizedTime清零,全部調用此方法不能從新播放動做


speed

動做播放速度1爲正常,0時動做中止在當前幀,能夠用做暫停或加速減速動做


normalizedTime

動做的歸一化時間的值,整數部分爲播放的遍數,不管是不是循環動做這個值都會一直累加


進階篇

layer層,

1高層能夠覆蓋低層的動做播放,

2blending屬性設置是高層是覆蓋仍是疊加低層

3經過weight設置混合比例

4此層使用的avatarmask


avatarmask

1能夠新建avatarmask,選中要編輯模型的avatar,選擇部分骨骼節點

2能夠將上下半身的骨骼節點作成兩個avatarmask,設置兩個層使用不一樣的avatarmask,每層播放不一樣的動做,使上下半身播放不一樣的動做.實現上下半身混合動做的效果

3注意當多個動做同時播放時,每一個動做都會觸發各自的動做幀事


坑點

1只能取得當前的動做狀態數據及下一個動做狀態數據,代碼可控性不強

2動做事件回調時沒法判斷是哪一層回調回來的,但其實不該該存在多個層在播同一個動做,出現這種狀況必定是偷懶或出錯了

3AnimatorStateInfo中的loop與動做文件的loop並不相同,只有在將動做文件拖到控制器和在控制器中SetAsDefault時,會將動做文件的loop值應用到AnimatorStateInfo中,很扯蛋的一件事,或是動做自己就在fbx中,在fbx中修改了loop值後應用也會生效


總結

1普通時能夠直接使用play或CrossFade,簡單不容易出錯,使用狀態機的好處是能夠實現多段動畫,經過狀態機事先設置鏈接好,只改變一個值來觸好一套多個動做

2甚至能夠將SetInteger設置狀態機值與play結合使用

好比當前是站立動做,狀態值爲1,***動做連線到站立動做,條件是動做播完而且狀態值爲1回到站立動做

這時代碼調用CrossFade***動做,這時的播放效果就是站立動做過渡到***的動做,***動做播完後從新變成站立動做

固然這個效果能夠直接使用狀態機完成,但前提站立動做必須或***動做連線,否則跑沒法切換到***動做,但當直接使用Play或CrossFade能夠忽略站立是否與***動做連線


寫在最後

若是是作動做類遊戲或須要動做混合,使用Animator會更新方便,但若是隻是簡單的播放動畫,建議仍是使用animation系統,可控性更強

相關文章
相關標籤/搜索