Unity Animator動畫狀態機


Unity Animator動畫狀態機

一個角色一般會擁有若干不同的狀態,需要在不同的條件下播放不同的狀態動畫(執行動作),還需要控制動畫的播放速度、播放時間等。在Unity中使用動畫狀態機(Animator)來將動畫狀態以流程圖的網格化形式可視化,可以通過它來實現角色動畫狀態的播放以及切換。

Animator窗口

創建、查看和修改Animator Controller文件。
image-20200904142124937

右邊部分:網格化布局區域

Entry:狀態機入口

Exit:狀態機出口

AnyState:任意狀態

State

​ 橙色:默認狀態,進入狀態機時默認連接該動畫

​ 灰色:一般狀態,可以由任意狀態進入該狀態

左邊部分:狀態機的動畫層和參數

  • 動畫層:使用動畫層同時控制角色不同部位或不同功能的狀態

點擊右側設置按鈕打開設置窗口

Weight:權重(0~1),1為正常播放

Mask:此層上使用的遮罩,可以限制動畫的播放部位,例如只要播放上半身的動畫,可以使用一個遮罩定義在上半身播放動畫。

Blending:

​ override:忽略其他層的信息

​ Additive:在先前層上添加動畫

Sync & Timing:用於動畫同步

​ Sync:勾選並選擇要同步的層,隨后狀態機的結構便會與之相同,但狀態使用的實際動畫剪輯不同。在同步層視圖中對狀態機的布局或結構所做的任何更改(添加/刪除狀態或過渡)都是針對同步層的源進行的。

​ Timing:同步層上的動畫的長度拉伸到與原始層上的一致,如果選中該選項,則動畫長度將在兩個動畫之間平衡(基於權重)。

IK Pass:開啟IK控制(可用以控制角色頭部注視物體)

可以通過多層動畫實現動畫的混合

  • 參數:控制或影響狀態機流程

    • Int - 整數
    • Float - 浮點數
    • Bool - true 或 false 值(由復選框表示)
    • Trigger - 當被過渡使用時,由控制器重置的布爾值參數(以圓形按鈕表示)

動畫狀態

狀態基礎

Motion:狀態綁定的動畫(Animation)

Speed:動畫播放的速度 Multiplier:Speed * 指定參數(float)作為運行時的播放速度

Motion Time:指定參數(float)作為動畫播放時間

Mirror:鏡像播放 Parameter:指定參數作(bool)為Mirror的開關

Cycle Offset:循環偏移 Parameter:指定參數(float)作為Cycle Offset

Foot IK:腳部IK修正,可解決角色跑動不正常問題

Transition

Solo:只生成當前過渡

Mute:禁用過渡

Has Exit Time:存在退出時間,即上一個狀態能否完整結束

Settings:(可通過數值修改,也可以通過圖形修改)

  • Exit Time:退出時間,前一個狀態的何時開始過渡、

  • Fixed Duration:Transition Duration以s為單位 取消勾選:Transition Duration以(前一個狀態的)百分數計數,1為100%、

  • Transition Duration:過渡時間

  • Transition Offset:過渡偏移,后一個狀態從何處開始,值為后一個狀態的百分數,1為100%。

  • nterruption Source:中斷源,可以打斷狀態的過渡、

    • None:不可打斷

    • Current State:前一個狀態開始的狀態過渡可以打斷正在進行的狀態過渡

    • Ordered Interruption:優先級高於當前過渡才可以打斷

      如上述狀態過渡,當處於A->B過渡時,如果觸發A->D條件,過程不會被打斷;如果觸發A->C條件,A->B立刻被打斷轉而執行A->B過渡。

    • Next State:從后一個狀態開始的狀態過渡可以打斷正在進行的狀態過渡

    A->C 和 A->D 將無法打斷這個過渡。但是,此時當我們在 A->B 過程中去觸發 B->D,State Machine 將立刻開始 A->D 的過渡,並且整個過程不需要完成 A->B 的Transition。

    • Current State Then Next State || Next State Then Current State:決定哪個動畫State上的過渡節點優先權更高,前者表示先看前一個State的優先級如果沒有被觸發,再看后一個State的優先級,后者則相反,來達到不同的融合與打斷效果。
  • Condition:過渡條件,可從參數中選擇

    • int / float :可選擇Greater(>)、Less(<)、Equals(==)、NotEqual(!=)指定的數作為過渡條件
    • bool:可選擇指定值(true or false)作為過渡條件
    • Trigger:條件為true時觸發狀態過渡

可以通過腳本來修改參數的值來觸發響應的的狀態過渡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM