C語言中文網 目錄

Unity 3D角色動畫在游戲中的應用

通過上一節《Unity 3D 人形角色動畫》我們對人形動畫有了一定的了解,接下來我們將介紹一下在游戲開發中人形角色動畫的具體應用步驟。

Animator 組件

Animator 組件是關聯角色及其行為的紐帶,每一個含有 Avatar 的角色動畫模型都需要一個 Animator 組件。Animator 組件引用了 Animator Controller 用于為角色設置行為,具體參數如下表所示。

參 數 含 義 功 能
Controller 控制器 關聯到角色的 Animator 控制器
Avatar 骨架結構的映射 定義 Mecanim 動畫系統的簡化人形骨架結構到該角 色的骨架結構的映射
Apply Root Motion 應用 Root Motion 選項 設置使用動畫本身還是使用腳本來控制角色的位置
Animate Physics 動畫的物理選項 設置動畫是否與物理屬性交互
Culling Mode 動畫的裁剪模式 設置動畫是否裁剪以及裁剪模式

Animator Controller

Animator Controller 可以從 Project 視圖創建一個動畫控制器(執行 Create→Animator Controller 命令),同時會在 Assets 文件夾內生成一個后綴名為 .Controller 的文件。

當設置好運動狀態機后,就可以在 Hierarchy 視圖中將該 Animator Controller 拖入含有 Avatar 的角色模型 Animator 組件中。

通過動畫控制器視圖(執行 Window→Animator Controller 命令)可以查看和設置角色行為,值得注意的是,Animator Controller 窗口總是顯示最近被選中的后綴為 .Controller 的資源的狀態機,與當前載入的場景無關。

Animator 動畫狀態機

一個角色常常擁有多個可以在游戲中不同狀態下調用的不同動作。例如,一個角色可以在等待時呼吸或搖頭,在得到命令時行走,從一個平臺掉落時驚慌地伸手。

當這些動畫回放時,使用腳本控制角色的動作是一個復雜的工作。Mecanim 動畫系統借助動畫狀態機可以很簡單地控制和序列化角色動畫。

狀態機對于動畫的重要性在于它們可以很簡單地通過較少的代碼完成設計和更新。每個狀態都有一個當前狀態機在那個狀態下將要播放的動作集合。這使動畫師和設計師不必使用代碼定義可能的角色動畫和動作序列。

Mecanim 動畫狀態機提供了一種可以預覽某個獨立角色的所有相關動畫剪輯集合的方式,并且允許在游戲中通過不同的事件觸發不同的動作。

動畫狀態機可以通過動畫狀態機窗口進行設置,如下圖所示。

動畫狀態機

動畫狀態機之間的箭頭標示兩個動畫之間的連接,右擊一個動畫狀態單元,在快捷菜單中執行 Make Transition 命令創建動畫過渡條件,然后單擊另一個動畫狀態單元,完成動畫過渡條件的連接。

過渡條件用于實現各個動畫片段之間的邏輯,開發人員通過控制過渡條件可以實現對動畫的控制。

要對過渡條件進行控制,就需要設置過渡條件參數,Mecanim 動畫系統支持的過渡條件參數有 Float、Int、Bool 和 Trigger 4 種。

下面介紹創建過渡條件參數的方法。

在動畫狀態機左側的 Parameters 面板中單擊右上方的“+”可選擇添加合適的參數類型(Float、Int、Bool 和 Trigger 任選其一),然后輸入想要添加的參數過渡條件(如 idle、run、attack、death 等),如下圖所示。

添加參數

最后在 Inspector 屬性編輯器 Conditions 列表中單擊“+”創建參數,并選擇所需的參數即可,如下圖所示。

Conditions列表

實踐案例:模型動畫

案例構思

模型動畫是常見的游戲動畫類型,玩家通過特定的操作對模型進行動作指定,從而完成交互功能。

本案例旨在通過模型動畫的制作,讓讀者了解骨骼綁定后的 fbx 模型動畫在 Unity 3D 軟件中的使用方法。

案例設計

本案例在 Unity 3D 內導入一個綁定好骨骼動畫的第三人稱人物模型,人物身上綁定了若干個動作,通過代碼實現鍵盤與模型動畫的交互功能,如下圖所示。

按A 鍵

按B鍵

按C鍵

按D鍵

案例實施

步驟 1):創建項目并保存場景。

步驟 2):執行 Assets→Import Package→Characters 命令載入人物資源。

步驟 3):將模型添加到 Scene 視圖中,按 F2 鍵將其重新命名為 Constructor,調整好位置,如下圖所示。

將第三人稱人物模型加入場景

步驟 4):在右側的 Inspector 面板中設置動畫動作,如下圖所示。

設置動畫動作
其中有關的參數功能如下:
  • Animation:默認動畫。
  • Size:動畫數量。
  • Play Automatically:是否自動播放動畫。
  • Animate Physics:是否接收物理碰撞。
  • Culling Type:動畫裁剪模式。

步驟 5):創建 JavaScript 腳本,并將其連接到攝像機上。
var obj:GameObject=null;
function Start(){
    obj=GameObject.Find("Constructor");
    obj.animation.wrapMode=WrapMode.Loop;
}                       //設置動畫播放類型為循環
function Update(){
    if(Input.GetKeyDown(KeyCode.A))            //按鍵后播放不同動畫
        {obj.animation.Play("idle");}
    if(Input.GetKeyDown(KeyCode.B))
        {obj.animation.Play("run");}
    if(Input.GetKeyDown(KeyCode.C))
        {obj.animation.Play("walk");}
    if(Input.GetKeyDown(KeyCode.D))
        {obj.animation.Play("jump pose");}
}
function OnGUI(){                                 //顯示提示信息
    GUILayout.Label("按字母鍵A、B、C、D切換播放模型骨骼動畫");
}
步驟 6):單擊 Play 按鈕測試,可以通過鍵盤 A、B、C、D 鍵控制人物動作。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo