UNITY 動畫系統(三){AnimatorController基礎}

前一篇我們大概了解Animator的用法後,這篇來針對AnimatorController做介紹,他可以說是動畫剪輯和轉換的流程圖,並使用「狀態機」管理各個動畫之間的轉換,我們只要掌握使用方法就可以靈活控制動畫了,接下來就來看看有哪些重點吧。

c

Animator

  • 首先我們要先開啟編輯視窗,從UNITY上方的Window可以找到它。
    animation-20180411002
  • 打開後看到的視窗大概是這樣,左側有兩個頁籤分別是Layers和Parameters,以及右側的Animation State Machines流程視圖。
    animation-20180411001其中有三個預設的狀態機(State Machines),Entry、Exit、Any State,分別表示這串動畫的進入點、離開點、任意狀態插入點。

Layer動畫圖層

  • 動畫圖層可以用來管理複雜的狀態機用於不同的身體部位。舉個例,我們熟知的CS射擊遊戲就經常出現下半身跳步,但上半身卻面向另一方開槍的狀況。我們可以按下上方的「+」來添加新圖層,用圖層上的齒輪管理圖層權重。
    animation-20180411003

Parameters參數

  • 動畫參數是在Animator控制器中定義的變量,可以從腳本訪問和分配數值,藉此控製或影響狀態機的流程變化。一樣按下上方的「+」來添加新的參數,參數有四種類型:animation-20180411004Int – 整數數字
    Float – 小數數字
    Bool – 真或假(複選框)
    Trigger  – 布爾類型參數,控制器被使用過後重置(一次性觸發器)

    可以透過程式腳本的對應方法 SetFloat、SetInt、SetBool、SetTrigger 和 ResetTrigger 來控制這些參數。

State Machines狀態機

  • 在視圖上空白處點下右鍵可以新增狀態機,這時候進入點只有唯一一個狀態機可以連接,它會將此狀態機設為預設連接。
    animation-20180411005


    animation-20180411006這條線除非有第二個狀態機可以改變預設連線,否則也無法刪除。

  • 選擇State可以在屬性面板調整一些參數
    animation-20180411010
    Motion:的位置就是這個狀態機對應控制的動畫檔。
    Speed:動畫的速度。
    Normalized Time:動畫的標準化時間比例(0~1)。
    Mirror:鏡射適用於人形動畫。
    Cycle Offset:動畫週期起始點偏移。
    Foot IK:適用於人形動畫的IK反向動力。
    Write Defaults:狀態機的設定是否覆寫原動畫檔。
    Transitions:與狀態機相連的線程清單。
    ※參數後有Parameter可勾選的表示,可以使用參數控制。

Transitions過度線

  • 在狀態機上按下滑鼠右鍵可以針對流程布局拉線「Make Transition」,拉到另個狀態機上按下滑鼠左鍵,就可以將流程線固定上。
    animation-20180411007


    animation-20180411008

  • 點選該線條就可以在面板看到相關的參數設定。animation-20180411009
    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)。

 

認識狀態機跟基本的流程控制屬性後,下篇就來學習更深的應用與功能。

Leave a Reply