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

2020-07-27 14:55 更新

我們對人形動畫有了一定的了解,接下來我們將介紹一下在游戲開發(fā)中人形角色動畫的具體應用步驟。

Animator 組件

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

參 數(shù) 含 義 功 能
Controller 控制器 關(guān)聯(lián)到角色的 Animator 控制器
Avatar 骨架結(jié)構(gòu)的映射 定義 Mecanim 動畫系統(tǒng)的簡化人形骨架結(jié)構(gòu)到該角 色的骨架結(jié)構(gòu)的映射
Apply Root Motion 應用 Root Motion 選項 設(shè)置使用動畫本身還是使用腳本來控制角色的位置
Animate Physics 動畫的物理選項 設(shè)置動畫是否與物理屬性交互
Culling Mode 動畫的裁剪模式 設(shè)置動畫是否裁剪以及裁剪模式

Animator Controller

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

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

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

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

實踐案例:模型動畫

案例構(gòu)思

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

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

案例設(shè)計

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

案例實施

步驟 1):創(chuàng)建項目并保存場景。

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

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

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

其中有關(guān)的參數(shù)功能如下:

  • Animation:默認動畫。
  • Size:動畫數(shù)量。
  • Play Automatically:是否自動播放動畫。
  • Animate Physics:是否接收物理碰撞。
  • Culling Type:動畫裁剪模式。

步驟 5):創(chuàng)建 JavaScript 腳本,并將其連接到攝像機上。

var obj:GameObject=null;
function Start(){
    obj=GameObject.Find("Constructor");
    obj.animation.wrapMode=WrapMode.Loop;
}                       //設(shè)置動畫播放類型為循環(huán)
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 鍵控制人物動作。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號