1. 程式人生 > >關於Unity中新版動畫系統的使用

關於Unity中新版動畫系統的使用

鼠標右鍵 情況 結構 del 查看 ons 控制器 控制 body

Mecanim動畫

1:舊版動畫系統只能通過代碼來控制動畫播放,隨著動畫種類變多,代碼復雜度也會增加,同時動畫過渡也需要非常繁瑣的代碼控制,為了讓有經驗的動畫師開發動畫,unity推出了針對人物角色的Mecanim動畫系統;
2:Mecanim支持運動重定向(Retargeting)功能,即把動畫從一個角色模型應用到另一個角色模型;
3: Mecanim允許使用“肌肉”來控制不同骨骼的運動範圍;覺得某個動畫太誇張的時候,可以用"肌肉"來限制一下。
4: Mecanim動畫系統三要素:
  (1)Avatar: 從Mecanim系統的簡化人形骨架結構(Unity抽象出來的骨架結構)到用戶實際提供的骨架結構的映射(自己模型所對應的骨架結構);只要我們命名比較規範,這個映射是可以自動識別的。
  (2)Animator Controller: 動畫控制器用來控制動畫的播放和過渡條件
  (3)Animation Clip: 動畫剪輯;

Mecanim動畫實例

1.創建Unity工程和文件目錄

2.導入資源文件包body_anim.unitypackage(第56)

3.打開Models文件夾,點擊模型Boy,設置Rig---->Animation Tyoe---->Humanoid(人形動畫)

4.配置Avatar

  a: 導入模型後,將模型的動畫模式配置成Humanoid模式。
    None: 無模式, Legacy: 舊版動畫模式, Generic 其他動畫模式, Humanoid 人形角色動畫模式;
  b: 系統將會自動生成模型對應的Avatar文件, 並作為其子對象;展開模型Boy可以看到一個BoyAvatar。
  c: 大部分情況下Mecanim都能正確的生成Avatar文件,
    Configure這個前面會有一個勾,點擊Configue,能查看到
    映射情況,如果有錯誤,點擊Configue,手動做好人形骨骼的映射。

   點擊Configure,Scene視圖裏面會呈現模型,綠色的一條一條的就是Unity抽象出來的骨架結構。右邊Mapping就是映射的結果,沒有綠色填充的就是美術沒有設計這個骨骼。有紅色的點就是沒有映射成功的,可以手動拖進去。

  d:Mapping: Clear清除映射, AutoMap自動映射;
  e 如果骨骼綁定正確,但是角色姿勢不對(不是標準的T形),
    在Scene中可看到消息“Character not in T-Pose”,解決此問題
    可通過Pose->Enforce T-Pose或旋轉其它的骨骼。
  f:Muscle配置:對於過於誇張的一些動作,比如動畫重定向過來的時候,小孩的動畫用在大人身上,可以通過對骨骼限定範圍來進行調整,讓這個骨骼運動在這個範圍內,這樣,就不用重新制作動畫;
    (1)點擊Muscles & Settings欄

    (2)點擊要限制的骨骼;

    (2)調整骨骼的運動範圍的參數,旋轉運動的幅度;

  g.配置完成後點擊Done---->Apply

5.把模型Boy拖進場景中,會自己掛載一個Animator的組件

 Controller屬性放動畫控制器

 Avator屬性放映射的BoyAvator文件

6.在res文件夾下創建一個動畫控制器Create---->Animator Controller,叫做anim_ctrl,雙擊打開,可以用鼠標中鍵按下拖動背景

7.動畫控制器配置

  a:動畫控制器anim_ctrl打開:Parameters是動畫控制器所帶的參數列表,Layers是當前的動畫層

  b: 動畫狀態機
    (1) 動畫狀態機必然包含有3個動畫狀態單元 Any State, Exit, Entry;
    (2) 動畫狀態機可以包含多個動畫狀態單元;
    (3) 還可以包含子動畫狀態機;
  c: 動畫狀態單元的創建:

    在創建之前可以查看這個動畫的效果,在Assets\Animations\AnisForFight目錄下,點擊某一個,再點擊Animation欄,下面的播放按鈕可以播放。


    方法(1): Animator窗口中鼠標右鍵 在菜單中選擇 Create State-->Empty;第一次創建的時候會被設置為默認動畫狀態並顯示為黃色,Entry會直接指向它,

        再創建一個就不會是默認狀態了顯示為灰色,也可以在任意非默認單元上右鍵 Set As Default來設置默認的動畫狀態,同時只能有一個默認的動畫狀態。
    方法(2): 將動畫文件拖入到Animator窗口;

    我們創建一個默認的動畫狀態單元叫idle,關聯它的Motion屬性,就是在Assets\Animations\AnisForFight\[email protected],[email protected]

    再創建一個動畫狀態單元叫jump,關聯它的Motion屬性,就是在Assets\Animations\AnisForFight\[email protected] 001文件,[email protected]

    測試:把jump設置為默認動畫狀態單元,關聯控制器到Animator組件,運行一下,發現模型Boy可以播放動畫。

  d: 過渡條件連接(從一個動畫過渡到另一個動畫):
    (1)將鼠標放在狀態單元上,鼠標右鍵-->Make Transition,創建動畫過渡條件,並再次點擊在另一個狀態單元上,完成過渡條件連接;

    (2)點擊兩個狀態之間的連線,右邊是一個過渡的效果,可以點擊播放,下面是一個過渡條件,默認是沒有過渡條件的,我們可以添加。

    (3)在狀態機左邊的Parameters面板,裏面的參數可以用來控制條件變量,首先要創建一個參數,點擊+號,選擇int類型,名字叫anim_state,默認值是0

    (4)創建好參數後,再點擊兩個狀態之間的連線,點擊Conditions下面的+號,添加一個條件,就是以anim_state為條件變量,可以Greater、Less、Equals、Not Equal------>0的時候跳轉

   (5)創建一個腳本來控制跳轉,叫anim_test

      打開

關於Unity中新版動畫系統的使用