動畫組件之間的關系
我們先看一張圖:

這里我們可以看到,我們在GameObject之上綁定的Animator組件是控制模型進行動畫播放的。
而其屬性Controller則對應一個Animator Controller文件,該文件可以在Animator窗口中打開,其是被設計為狀態機形式的系統,多個狀態之間的切換關系可以在該界面進行設置。
Animator Controller中的每個狀態則對應一個Animation Clip,每個Animation Clip是一個簡單的動畫單元,可以在Animation窗口中打開。
動畫文件
Animation Clip
如果fbx包含動畫文件,則可以在其內部創建多個動畫剪輯,每個Animation Clip包含一個簡單的動畫如Idle、run等等。
Animation文件
老的動畫形式的文件,使用XML數據來記錄動畫信息。
Animation View的使用
好了,回到我們的主角Animation View中來,對於Animation Clip文件來說,雖然可以使用Animation窗口打開編輯,但是我們一般都不會進行編輯,因為太過於復雜,這部分內容應該在建模軟件中由美術編輯好。
那么,Animation窗口可以用來做什么呢?答案是我們可以用它來制作一些簡單的動畫,比如在一些游戲中,戰斗開始前,攝像機會在整個場景中來回移動最后再回到角色后方(目的是讓玩家在戰斗之前了解敵人所在方位及戰斗場景的地形)。
移動攝像機的示例
1.首先我們打開Animation窗口,選擇場景中的Main Camera,然后點擊Animation窗口中的Create按鈕,保存我們的文件,Unity會生成兩個文件,一個Animator Controller文件及一個Animation文件。
2.下面我們點擊Add Property兩次,添加position及rotation,如下:

3.將紅色線條移到最后一幀,然后點擊菜單欄“GameObject”->“Align With View”,將攝像機移動到當前Scene視圖的位置同時旋轉使其面向Scene視圖面向的方向。
4.點擊播放按鈕即可看到攝像機移動效果。
5.如果還要繼續添加可以在后面雙擊時間軸添加關鍵幀即可。
此時我們會發現Main Camera已經被添加一個Animator的組件,同時所有的參數也已經設置好了,我們直接點擊運行游戲就可以看到效果。
Apply Root Motion
在我們的Animator組件中,有一個Apply Root Motion的選項,該選項沒有勾選時,我們的動畫會按照世界坐標來移動,即我們的Animation上的數值會直接設定到目標的position之上,而如果勾選,則是在目標的position之上添加我們的動畫設定的數值。
事件系統
對於一個動畫,我們還可以為其任意一幀添加一個事件:
1.首先,我們為Main Camera添加一個接收Event事件的組件:
1 using UnityEngine; 2 using System.Collections; 3 4 public class TestAnimEvent : MonoBehaviour 5 { 6 public void ShowAnimMsg(string msg) 7 { 8 print(msg); 9 } 10 }
2.下面我們在Animation窗口中的任意一幀添加一個事件,並調用ShowAnimMsg方法同時傳遞一個字符串:

3.運行游戲就會看到輸出了。
那么我們可以使用Event的功能做什么呢?試想一下,如果我們希望我們的人物在跳躍着陸時需要播放一個音效,就可以使用到事件的功能了。
