Unity 第10章 Mecanim動畫系統

2022-09-15 03:00:11 字數 1774 閱讀 2864

分類:unity、c#、vs2015

建立日期:2016-05-02

一、簡介

unity提供了兩種動畫系統:一種是早期版本提供的舊版(legacy)動畫系統,舊版本(legacy)以後將逐步被淘汰掉並在新版中不再支援。另一種是mecanim動畫系統,這是建議使用的新版動畫系統。

如果你是初學者,就不要去學舊版(legacy)動畫了,直接學習mecanim動畫系統即可。

二、什麼是mecanim動畫系統

mecanim(肌肉線條)是unity提供的新版動畫系統,unity計畫將工作流完全併入mecanim以後,就徹底淘汰舊版 (legacy) 動畫系統。或者說,以後直接使用mecanim來實現動畫處理就行了,特別是在使用類人動畫時更是如此。

另外,在某些情況下,你可能仍然會偶爾使用類似舊版 (legacy) 動畫系統提供的功能。比如處理unity 4.0 之前建立的舊版動畫和相關**,以及希望通過引數而不是通過時間來控制動畫片段的場合(比如控制瞄準角度)。為了解決這些問題,unity 5.x又在mecanim中將動畫進一步細分為「類人動畫」和「通用動畫」。

mecanim動畫系統主要提供了以下功能:

(1)針對人形角色(或者叫類人角色)的工作流。利用它可方便地建立動畫。

(2)retargeting(運動重定向或者動畫重定位)。利用它可以把動畫從乙個角色模型應用到另乙個角色模型上。

(3)針對animation clips(動畫片段)的工作流。可針對動畫片段以及他們之間的過渡和互動過程進行預覽。該工作流可以使動畫師在編寫遊戲邏輯**之前即可預覽動畫效果,這樣動畫師就可以獨立進行工作而不用過分地依賴於程式設計師。

(4)使用視覺化程式設計工具(visual programming tool)管理動畫之間複雜的互動。

(5)可對身體的不同部位分別用指令碼實現不同的邏輯進行動畫控制。

三、mecanim動畫系統的基本處理流程

利用mecanim製作動畫時,一般分成三個大的步驟來實現:準備動畫資源、建立動畫角色、角色控制處理。

第1步—準備動畫資源

建立動畫資源主要通過其他的專業3d軟體(例如 3ds max 2015 或者 maya)來完成,這一步的工作與mecanim功能無關。實際的研發團隊中一般由美工或動畫設計師來專門完成它,當然,如果人手少,也可以由程式設計師直接用3ds max 2015來完成。

動畫資源準備好以後,將其匯入到unity中,然後就可以利用mecanim製作動畫了。

第2步—建立動畫角色

建立動畫角色的目的是為了通過指令碼來控制動畫,比如控制轉身、甩胳膊、起跑、慢走、……等。

有兩種建立動畫角色的方式:類人角色和通用角色。

(1)類人角色

mecanim 針對類人(人形)動畫模型專門提供了一種特殊的工作流,該工作流使用擴充套件的gui和動畫重定向來共同實現遊戲中需要的類人角色,包括建立 **atar 以及定義對肌肉線條(muscle definitions)的調節等。

(2)通用角色

此方式專為建立非類人角色而提供,例如各種生物動畫道具以及四足動物等。雖然通用角色並不適用於動畫重定位,但仍可以利用mecanim實現非類人角色需要的的其他功能,比如控制槍枝的瞄準角度等。

第3步--角色控制處理

角色的動畫控制處理就是能讓玩家通過鍵盤、滑鼠或遊戲杆等其他裝置讓角色像活人或者動物一樣「動」起來,也叫「賦予角色生命」,例如讓玩家通過左右箭頭鍵或者滑鼠左鍵控制人的轉彎、通過上下箭頭鍵後者滑鼠右鍵控制人的起跑或停止、……等。

這一步涉及的內容包括設定動畫片段以及動畫片段之間的互動,設定狀態機和混合樹,列出動畫引數,以及通過c#指令碼**控制動畫的行為。

第10章 函式

定義函式的格式 name command list 呼叫函式的格式 name 省略括號 檢視到所宣告的函式定義 declare f name 取消定義的函式,可以使用unset命令 unset name 案例 bin bash 定義函式printmsg用來輸出資訊到終端螢幕,該函式至少需要兩個引數 ...

第10章第8題

mylist.h ifndef mylist h define mylist h include const int len 10 class mylist endif void show double mid 這個函式用於簡單的顯示乙個double mylist.cxx include mylis...

Unity 第7章 輸入控制

分類 unity c vs2015 建立日期 2016 04 21 一 簡介 unity提供了 個非常易用和強大的用於處理輸入資訊的類 input,利用該類可以處理滑鼠 鍵盤 搖桿 方向盤 手柄等遊戲外設,也可以處理ios androd等移動裝置的觸控輸入資訊。程式設計師通過編寫指令碼接收輸入資訊,...