Unity的動畫系統由以下幾部分組成:Animator(動畫編輯器)、Animator Controller(動畫控制器)、Animation(動畫片段)、Avatar(骨骼模型)
他們之間關系如下圖:(注:“Animator Controller”在“Animator”中進行編輯,可以創建多個“Animator Controller”;)
一、Animator(動畫編輯器)
參數介紹:
1、Layers:動畫層。
2、Parameters:參數類型。是動畫片段觸發的條件
3、Any State:可在任意動畫狀態下轉入連接Any State的動畫。
因為Any State在任意狀態下都可以轉入,所以條件應設為一次性觸發。應該注意的是,如果觸發條件一直為真。那么動畫將沒有播完就會重新開始播放。此時可以將動畫改為其他動畫轉入,並將觸發條件改為 bool 值,可以避免動畫沒播完就重新開始播放的情況。
4、Exit:動畫出口。該出口指向Entry
5、Entry:動畫入口。連接該動畫層的默認動畫
Add Behaviour 的簡單應用:
在 Animator 中選中動畫事件,可以在“Add Behaviour”中添加腳本增加動畫的靈活性。腳本自動繼承 “StateMachineBehaviour”,
可以使用回調函數:OnStateEnter();OnStateUpdate();OnStateMove();OnStateIK()
using System.Collections; using System.Collections.Generic; using UnityEngine; public class testBehaviour : StateMachineBehaviour { public GameObject goPrefabObj; //粒子系統預設(爆炸) private GameObject _goPrefabObj; //克隆變量 // OnStateEnter override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { //生成粒子系統 _goPrefabObj = Instantiate(goPrefabObj, animator.rootPosition, Quaternion.identity); } // OnStateExit :離開當前狀態時調用 override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Destroy(_goPrefabObj); } }
二、Animator Controller(動畫控制器)
“Animator Controller”可以在Project視圖上創建,或者直接拖拽動畫片段到 Animator 編輯器中(“Animator Controller”將會自動創建)。該動畫控制器將在角色模型的Animator組件上添加應用。
三、Animation(動畫片段)
1、Unity創建動畫:
在hierarchy層級視圖中選中需要創建動畫的游戲對象,在Animation窗口點擊Create即可創建一個動畫片段,同時將會生成一個“Animator Controller”控制器。在Unity中只能創建一些簡單的動畫,常用於攝像機的漫游動畫。較復雜的動畫需要在3Dmax、Maya等三維軟件中制作完成以后再導入。
2、導入動畫:
● Import Animation:從該模型資源中導入動畫。如果不勾選該模型則不會出現圖片中的屬性及動畫。
● Loop time:動畫循環
Loop pose:無縫運動
● Root Transform Rotation:
Bake Into Pose:消除動畫播放本身產生的旋轉
Based Upon: Transform 是(基於Original:原件,使用在文件中預設好的值;Feet:表示基准點使用第一幀的腳;Center of Mass:重心等)旋轉或發生位移等。
其他Transform Position(···)依次類推。
● Mirror:鏡像。即將動畫左右互換。
● Curves:曲線(動畫)
● Events:事件
● Mask:遮罩
● Motion:動作
四、Avatar(骨骼模型)
● Mapping:映射骨骼模型
● Muscle&Settings:肌肉設置