前一篇我們大概了解Animator的用法後,這篇來針對AnimatorController做介紹,他可以說是動畫剪輯和轉換的流程圖,並使用「狀態機」管理各個動畫之間的轉換,我們只要掌握使用方法就可以靈活控制動畫了,接下來就來看看有哪些重點吧。
Animator
- 首先我們要先開啟編輯視窗,從UNITY上方的Window可以找到它。
- 打開後看到的視窗大概是這樣,左側有兩個頁籤分別是Layers和Parameters,以及右側的Animation State Machines流程視圖。
其中有三個預設的狀態機(State Machines),Entry、Exit、Any State,分別表示這串動畫的進入點、離開點、任意狀態插入點。
Layer動畫圖層
- 動畫圖層可以用來管理複雜的狀態機用於不同的身體部位。舉個例,我們熟知的CS射擊遊戲就經常出現下半身跳步,但上半身卻面向另一方開槍的狀況。我們可以按下上方的「+」來添加新圖層,用圖層上的齒輪管理圖層權重。
Parameters參數
- 動畫參數是在Animator控制器中定義的變量,可以從腳本訪問和分配數值,藉此控製或影響狀態機的流程變化。一樣按下上方的「+」來添加新的參數,參數有四種類型:
Int – 整數數字
Float – 小數數字
Bool – 真或假(複選框)
Trigger – 布爾類型參數,控制器被使用過後重置(一次性觸發器)
可以透過程式腳本的對應方法 SetFloat、SetInt、SetBool、SetTrigger 和 ResetTrigger 來控制這些參數。
State Machines狀態機
- 在視圖上空白處點下右鍵可以新增狀態機,這時候進入點只有唯一一個狀態機可以連接,它會將此狀態機設為預設連接。
- 選擇State可以在屬性面板調整一些參數
Motion:的位置就是這個狀態機對應控制的動畫檔。
Speed:動畫的速度。
Normalized Time:動畫的標準化時間比例(0~1)。
Mirror:鏡射適用於人形動畫。
Cycle Offset:動畫週期起始點偏移。
Foot IK:適用於人形動畫的IK反向動力。
Write Defaults:狀態機的設定是否覆寫原動畫檔。
Transitions:與狀態機相連的線程清單。
※參數後有Parameter可勾選的表示,可以使用參數控制。
Transitions過度線
- 在狀態機上按下滑鼠右鍵可以針對流程布局拉線「Make Transition」,拉到另個狀態機上按下滑鼠左鍵,就可以將流程線固定上。
- 點選該線條就可以在面板看到相關的參數設定。
Has Exit Time:退出時間受到動畫長度影響,不勾選表示可以隨時從中斷。
Settings:
Exit Time:如果勾選「Has Exit Time」才會生效,表示轉換生效的確切時間。 例如,退出時間0.75表示動畫播放至75%的時候切換下個動畫。
Fixed Duration:勾選「Transition Duration」的設定才會生效。
Transition Duration:前個動畫和後個動畫的混合比例。
Transition Offset:後個動畫的起始點偏移量。
Interruption Source:控制可能中斷此轉換的情況。
Ordered Interruption:確定當前轉換是否可以被其他轉換中斷,而與其順序無關。
Conditions:設定一個或多個觸發此線程的參數條件(int、float、bool、trigger)。
認識狀態機跟基本的流程控制屬性後,下篇就來學習更深的應用與功能。