Uinty Mecanim 練習與心得


Mecanim是Unity 4.0 新增的一個角色動畫系統,細節跟官方的構想不是很清楚,但目前各人感覺最方便的幾個點就是"方便共用動畫",它有點類似遊戲引擎官方做一個公共骨骼,將每個人的骨骼連結到公共的骨骼上,動畫也綁到公共骨骼,就可以一個動畫多模型使用。



並且以往遊戲角色動畫偏向設計為"原地行走",這個動畫系統的範本卻做成"向前行走",轉向也是一樣不再是原地,而有位移(跳躍還沒實際測試練習)。
所以使用這個動畫系統也可以考慮將移動動畫做成有位移的。

這次練習是使用3dsmax的CAT系統,參考 3ds Max CAT四足动物动作调节详解 - CAT路径动画设置 製作向前、轉圈的行走動畫。
在Unity的Mecanim設定混合樹時參考 新动画系统Mecanim的简单图文教程 來設定混合樹的條件、參數與變數。
控制的程式碼則參考 Unity3d 4.0新动画系统Mecanim用法(二) 並嘗試以javascript來撰寫。
以下是程式碼,如果有將倒退動畫設定進去,應該也可以沿用,程式碼跟舊的方式一樣,拖曳到角色身上即可。
不過仔細看影片發現,新版的將人物重力系統弄為Rigibody,而不是Charactr Controller,這可能還要再花點時間研究。

#pragma strict
// 宣告動畫參數:移動 | 方向
var walk:float;
var direction:float;
// 宣告 animator為Animator
var animator : Animator;

function Start () {
// animator 為物件的Animator
animator = gameObject.GetComponent(Animator);
}

function Update () {
// 動畫參數 為 鍵盤水平、垂直參數
walk = Input.GetAxis("Vertical");
direction = Input.GetAxis("Horizontal");

if(animator)
{
// 設定 物件上Animator變數,播放相對應動畫
animator.SetFloat("Speed",walk);
animator.SetFloat("Direction",direction);
}
}



補充介紹與相關資源
關於新版模型動畫匯入,依照此連結內的介紹,會有三種模式
Legacy  、 Generic 以及 Humanoid
第一項是使用舊版的動畫方式、後兩項是用新版的動畫方式,新舊差異在於Animation之於Animator,舊版控制動畫是使用Animation元件,需要完全以程式碼切換不同的動畫片段,而新版Mecanim則是以Animator元件連結至Animator Controller,以Animator Controller內的transition過度條件來轉換不同的動畫狀態(雖然也是得用程式碼控制)。
這篇文章有更細部的設定過程。

留言

這個網誌中的熱門文章

參加畢業展之設計類展場小心得

Unity 判斷兩物之間距離、角度,並注視目標

Action Game Maker 1.03 正體中文漢化版