Unity3D-----Mecanim動畫系統

一、Mecanim動畫系統的介紹

  • 針對人形角色提供了一種特殊的工作流,包含Avatar的創建和對肌肉的調節。
  • 動畫重定向的能力,可以非常方便地把動畫從一個角色模型應用到其他角色模型上。
  • 提供可視化Animator窗口,可以直觀地通過動畫參數和Transition(動畫過度線)等管理各個動畫間的過度。
  • Animator Mecanim 動畫系統動畫組件
  • AnimatorController 動畫控制器
  • Avatar Mecanim 可識別的骨骼
  • Retargeting 角色之間動畫的互用
    (溫馨提示:模型可從Asset Store商店下載,Window->Asset Store),下載的人物模型一般自帶動畫,無需另找。

二、Mecanim動畫系統的使用

1、五個步驟實現Mecanim

  1. 找到需要使用動畫的模型的原工程文件(注意不是預製件,下圖爲2019版本的unity中原工程文件與預製件的圖標區別。)
    在這裏插入圖片描述
    修改原工程文件中Rig面板下的Animation Type屬性。
    在這裏插入圖片描述
    其中Generic和Humanoid屬性是支持Mecanim動畫系統的,而Legacy屬性是支持Animation動畫的。Generic翻譯爲非人類的,即模型的骨骼框架不是人形的就選擇此屬性,Humanoid翻譯爲標準人形的,即骨骼框架爲人形的就選擇此屬性。(提示:當骨骼框架爲人形時,Generic和Humanoid屬性均適用)
  2. 修改好動畫屬性之後,點擊面板中的apply按鈕,當configure前有個√時,表明骨骼匹配成功!(若是不成功,可以使用自動修復功能來嘗試修復,方法在"注意問題"標題內容中)這時,在原工程文件中會自動生成一個骨骼動畫。如下圖
    在這裏插入圖片描述
  3. 回到模型的遊戲物體當中,這時Animator組件中的Controller屬性爲空,提示需要給予一個Animator Controller,所以我們需要創建一個Controller。
    在這裏插入圖片描述
    在project面板中,鼠標右鍵點擊Create->Animator Controller,進行創建。如下圖
    在這裏插入圖片描述
  4. 創建完成之後,將其拖拽至Controller屬性當中。然後點擊,window->Animation->Animator或直接雙擊控制器,打開此窗口進行動畫設置。在這裏插入圖片描述
  5. 將錄製的動畫拽入此窗口中,這就完成了!點擊運行按鈕,即可看到你所佈置的動畫在運行,若是想修改動畫屬性,可雙擊窗口中的黃色按鈕,即可進入動畫設置!
    在這裏插入圖片描述

三、重定向功能的測試

選用兩個人形模型,分別使用Mecanim動畫系統,然後將第一個人形模型的動畫給予第二個人形模型(也就是將第一個人物模型的動畫給第二個人物模型的Animator Controller控制器,雙擊控制器可打開窗口),運行查看結果。

四、多個動畫的使用以及默認動畫的設置

1、默認動畫(第一個播放)的設置

在這裏插入圖片描述

2、多個動畫的使用

在這裏插入圖片描述

  • 點擊後,會出現一條動畫過渡線,選擇另一個動畫即可,鼠標右鍵點擊可取消。
  • 有關動畫過渡線的屬性設置,請參見官方說明文檔

https://docs.unity3d.com/Manual/class-AnimatorStateTransition.html

五、代碼控制動畫播放

1、在此面板中添加需要判斷的類型,共有四種:float,int,bool,trigger。以下代碼我們使用Bool類型。
在這裏插入圖片描述
2、在兩個動畫之間添加動畫過度線,點擊動畫過度線,進入動畫過度線設置面板
在這裏插入圖片描述
點擊+,將之前添加的屬性加入到這裏。
在這裏插入圖片描述
當條件添加完後,只有當動畫滿足Has Exit Time和Conditions中的所有條件時,動畫才能根據動畫過度先進入下一個動畫當中。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AttackByAnimator : MonoBehaviour
{
    private Animator ani;
    private void Start()
    {
    //獲取Animator組件
        ani = GetComponent<Animator>();
    }
    private void Update()
    {
    //當按下空格時,將Space變量設置爲true
    //那麼只有當按下空格時,動畫纔會過渡到attack動畫當中,
    //將attack->idle的過度線的Has Exit Time勾選上,那麼只有attack動畫播放完畢纔會回到idle動畫
        ani.SetBool("Space", Input.GetKeyDown(KeyCode.Space));
    }
}

六、注意問題

1、自動旋轉問題

在動畫播放過程當中,模型可能會發生自動旋轉的問題,解決方案如下
(1)、進入動畫設置界面,將旋轉、xyz軸通通鎖住即可,如下圖,將屬性勾選上即可
在這裏插入圖片描述

2、骨骼匹配失敗的修復方法

  • 點擊生成的骨骼,在這裏插入圖片描述,出現的面板上有個configure Avatar按鈕。
  • 打開此骨骼佈置面板(Pose和Mapping在此面板的底部),點擊Pose->Reset,再點擊Mapping->Automap
  • 以上步驟完成,若提示需要T pose展示,則再點擊Pose->Enfore T-Pose,到此骨骼自動匹配完成,圖片顯示應爲綠色,不帶有任何紅色,如下圖
    在這裏插入圖片描述
  • 若是自動匹配還是出現錯誤,可以點擊Mapping->Clear後再次進行嘗試,再不行那麼就請手動調試吧!! 麻煩的很就不介紹了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章