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


動畫組件之間的關系

我們先看一張圖:

這里我們可以看到,我們在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的功能做什么呢?試想一下,如果我們希望我們的人物在跳躍着陸時需要播放一個音效,就可以使用到事件的功能了。


免責聲明!

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



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