Unity3D 4.x 使用Mecanim实现动画控制
Unity3D 4.x 版本號之后提供了一種新的動畫機制Mecanim,盡管眼下還支持之前的Animation。但看到Unity3D 4.3?預(yù)覽版里Sprite的動畫也是基于Animator的,可知Mecanim將會是以后動畫播放的趨勢!
Mecanim是一種基于狀態(tài)機的結(jié)構(gòu),不同的狀態(tài)表示一個動作(或者多個動作融合,或者一個子狀態(tài)機)。狀態(tài)之間使用一種稱為Transition的組件關(guān)聯(lián),Transition中能夠設(shè)定一些條件,當(dāng)在Transition“源狀態(tài)”下。滿足其條件之后。將自己主動跳轉(zhuǎn)到Transition“目的狀態(tài)”!
(詳細(xì)使用方法請參照Unity3D手冊Mecanim)
在一些ARPG的游戲中,比方 端游的DNF和闖關(guān)類的街機游戲,連續(xù)按攻擊鍵都會觸發(fā)一套組合攻擊。在這個過程中敵人通常是硬直狀態(tài)的。并且組合攻擊的最后一下通常是重?fù)簟_@樣做既添加了連擊帶來的爽快感。又促使玩家在攻擊時採取一定的攻擊策略。
Mecanim的狀態(tài)機設(shè)計就非常方便的使開發(fā)人員實現(xiàn)了這一效果。
1.動畫狀態(tài)機
這里僅僅用4個動作描寫敘述,待命狀態(tài)(Idle)。攻擊1狀態(tài)(AtkSlice),攻擊2狀態(tài)(AtkStab),攻擊3狀態(tài)(AtkCleave),3個攻擊狀態(tài)分別表示連續(xù)按下“普通攻擊鍵”時觸發(fā)的狀態(tài),是有先后順序關(guān)系的。即假設(shè)在待命狀態(tài)下按下“攻擊鍵”,則進(jìn)入攻擊1狀態(tài)。假設(shè)在攻擊1狀態(tài)下繼續(xù)按下“攻擊鍵”。則進(jìn)入攻擊2狀態(tài)。假設(shè)不按下“攻擊鍵”,則回到待命狀態(tài)。攻擊2狀態(tài)到攻擊3狀態(tài)同理。攻擊3狀態(tài)覺得是重?fù)簟<催B擊結(jié)束。回到待命狀態(tài)。
狀態(tài)圖例如以下
我希望能以最少的代碼和設(shè)置完畢這個功能。所以僅僅加入了一個狀態(tài)機參數(shù) ActionCMD,如果 ActionCMD = 1 為進(jìn)入攻擊狀態(tài)參數(shù)
(1)在隨意3種攻擊狀態(tài)下,不再繼續(xù)按下“攻擊鍵”,則回到待命狀態(tài),即上圖 3條白色Transition
(2)在待命。攻擊1,攻擊2狀態(tài)下,繼續(xù)按下“攻擊鍵”,則跳轉(zhuǎn)到連擊狀態(tài)(即下一個攻擊狀態(tài))。即上圖3條藍(lán)色Transition
2.代碼實現(xiàn)
(1)狀態(tài)機設(shè)置完畢之后,要做的就是在代碼中完畢對當(dāng)前狀態(tài)的推斷,以及對狀態(tài)參數(shù)的設(shè)置。用以完畢動畫狀態(tài)機的切換!
[csharp]?view plaincopyprint?
(2)在Start() 中獲取Animator組件引用
(3)在Update() 中依據(jù)當(dāng)前狀態(tài)和輸入?yún)?shù)促使?fàn)顟B(tài)切換
[csharp]?view plaincopyprint?
[csharp]?view plaincopyprint?
這里必須注意的是該。在Update() 二手0.6和0.8 分別低于目前的狀態(tài)應(yīng)該跳轉(zhuǎn)到待機參數(shù)Exit Time(這一次也正交)
轉(zhuǎn)載于:https://www.cnblogs.com/hrhguanli/p/4752966.html
總結(jié)
以上是生活随笔為你收集整理的Unity3D 4.x 使用Mecanim实现动画控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP环境安全性能检查
- 下一篇: 一些看起来简单做起来难的程序员笔试面试题