咱們先看一張圖:動畫
這裏咱們能夠看到,咱們在GameObject之上綁定的Animator組件是控制模型進行動畫播放的。spa
而其屬性Controller則對應一個Animator Controller文件,該文件能夠在Animator窗口中打開,其是被設計爲狀態機形式的系統,多個狀態之間的切換關係能夠在該界面進行設置。設計
Animator Controller中的每一個狀態則對應一個Animation Clip,每一個Animation Clip是一個簡單的動畫單元,能夠在Animation窗口中打開。code
若是fbx包含動畫文件,則能夠在其內部建立多個動畫剪輯,每一個Animation Clip包含一個簡單的動畫如Idle、run等等。blog
老的動畫形式的文件,使用XML數據來記錄動畫信息。遊戲
好了,回到咱們的主角Animation View中來,對於Animation Clip文件來講,雖然可使用Animation窗口打開編輯,可是咱們通常都不會進行編輯,由於太過於複雜,這部份內容應該在建模軟件中由美術編輯好。事件
那麼,Animation窗口能夠用來作什麼呢?答案是咱們能夠用它來製做一些簡單的動畫,好比在一些遊戲中,戰鬥開始前,攝像機會在整個場景中來回移動最後再回到角色後方(目的是讓玩家在戰鬥以前瞭解敵人所在方位及戰鬥場景的地形)。ip
1.首先咱們打開Animation窗口,選擇場景中的Main Camera,而後點擊Animation窗口中的Create按鈕,保存咱們的文件,Unity會生成兩個文件,一個Animator Controller文件及一個Animation文件。字符串
2.下面咱們點擊Add Property兩次,添加position及rotation,以下:string
3.將紅色線條移到最後一幀,而後點擊菜單欄「GameObject」->「Align With View」,將攝像機移動到當前Scene視圖的位置同時旋轉使其面向Scene視圖面向的方向。
4.點擊播放按鈕便可看到攝像機移動效果。
5.若是還要繼續添加能夠在後面雙擊時間軸添加關鍵幀便可。
此時咱們會發現Main Camera已經被添加一個Animator的組件,同時全部的參數也已經設置好了,咱們直接點擊運行遊戲就能夠看到效果。
在咱們的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的功能作什麼呢?試想一下,若是咱們但願咱們的人物在跳躍着陸時須要播放一個音效,就可使用到事件的功能了。