Unity3D之Mecanim動畫系統學習筆記(三):Animation View

動畫組件之間的關係

咱們先看一張圖:動畫

這裏咱們能夠看到,咱們在GameObject之上綁定的Animator組件是控制模型進行動畫播放的。spa

而其屬性Controller則對應一個Animator Controller文件,該文件能夠在Animator窗口中打開,其是被設計爲狀態機形式的系統,多個狀態之間的切換關係能夠在該界面進行設置。設計

Animator Controller中的每一個狀態則對應一個Animation Clip,每一個Animation Clip是一個簡單的動畫單元,能夠在Animation窗口中打開。code

動畫文件

Animation Clip

若是fbx包含動畫文件,則能夠在其內部建立多個動畫剪輯,每一個Animation Clip包含一個簡單的動畫如Idle、run等等。blog

Animation文件

老的動畫形式的文件,使用XML數據來記錄動畫信息。遊戲

Animation View的使用

好了,回到咱們的主角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的組件,同時全部的參數也已經設置好了,咱們直接點擊運行遊戲就能夠看到效果。

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的功能作什麼呢?試想一下,若是咱們但願咱們的人物在跳躍着陸時須要播放一個音效,就可使用到事件的功能了。

相關文章
相關標籤/搜索