天天看點

Unity動畫知識之二:Animator動畫狀态機

文/拉撒路

  上次我們講過 Unity遊戲動畫從入門到住院 ,今天我們來講一下動畫狀态機。

  好了,現在我們已經成功的導入了動畫。接下來要玩的東西就很裝13啦。因為大部分動畫師是用不到這家夥的,需要掌握這個技能的,至少也是動畫組長級别了。嗯。。。一個組隻有你一個動畫的,閉嘴!給你個同情的眼神。

Unity動畫知識之二:Animator動畫狀态機

  這個裝叉的東西就是動畫狀态機

  嘛~肯定有不明真相的吃瓜群衆要問 

Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機

  , 這東西除了裝B還能幹嘛用。狀态機嘛,提供了動畫狀态之間的切換功能、自帶動畫融合、能編輯動畫播放的邏輯順序、能設定随機播放、能設定行為樹。現役動畫狀态機是在4.0版本問世的,他跟前代相比。那簡直是bip骨骼跟bone骨骼的差別。

  首先,我們要建立個新的狀态機。在project面闆下,點create 找到animator controller 點選建立狀态機,按F2可從命名,輕按兩下它進入狀态機面闆。或在window視窗,找到animator打開狀态機面闆。

Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機

  把做好的動畫拖入狀态機面闆,或右鍵create state→empty建立空狀态,在屬性面闆motion屬性欄指定動畫。

Unity動畫知識之二:Animator動畫狀态機

  那麼接下來介紹下灰色矩形狀态機的inspector(屬性面闆)内容

  命名 不解釋

  tag 标簽

  motion 前面說過 是指定動畫的地方

  speed 速度 動畫的播放速度 機關是倍

  mirror 鏡像 跟動畫系統那邊的鏡像沒啥差別

  cycle offset 循環抵消 額 貌似是循環次數設定

  這三個參數都有parameter這個選項 這個勾選的話就是使用動畫自帶的參數設定

  foot IK 腳部IK

  write defaults 寫入預設

Unity動畫知識之二:Animator動畫狀态機

  建立了一系列灰色矩形狀态,右鍵make transition可以給狀态機之間指定連接配接關系

Unity動畫知識之二:Animator動畫狀态機

  選中連線,會發現連線也是有屬性設定的。毀譽參半的動作融合就是在這裡設定

  接受打斷時間 勾選後要等目前動畫播放完後,才會接下一個狀态。不勾選的話 就允許動畫播放一半時被打斷。這裡稍微介紹一下下面的參數,實際你再操作過程當中自然就了解是什麼意思了……setings設定、exit time打斷時間(從哪一幀開始逐漸降低目前動畫的權重)、fixed duration固定持續時間(這其實是一個切換開關,切換是按照秒顯示還是按照百分比顯示)、transition duration過度持續時間 (過度有多長)、transition offset過度抵消(從下一個動畫的什麼位置開始播放)、interruption source中斷來源 。

Unity動畫知識之二:Animator動畫狀态機

  嘛 給大家看一個比較簡單的動畫狀态機,這裡橙色的待機動畫是初始狀态,其他狀态都需要從這裡出發,也都能回到這裡。這是最沒有要求的的策劃寶寶 

Unity動畫知識之二:Animator動畫狀态機

  想出的最簡單粗暴狀态邏輯了。每個灰色矩形的狀态表示一種動畫,箭頭連線表示狀态切換方向。比如待機和移動是可以互相切換過去的,但是待機能切換到死亡,死亡卻不能切回待機。正所謂人死不能待機,說的就是這個道理。這裡說個小瑕疵,就是我的狀态機是為了示範友善是以起的中文名,你的話最好不要用中文。因為。。。

Unity動畫知識之二:Animator動畫狀态機

  接下來以三連擊為例,講一個相對複雜一點的狀态機關系。正常順序為待機→攻擊1→攻擊2→攻擊3→攻擊3收招→待機,這是一套三連擊打完的順序,但是玩家操作的時候可能隻按了一下攻擊,那麼狀态機的順序就是待機→攻擊1→攻擊1收招→待機。攻擊2同理。這是一個有那麼點要求的act或arpg策劃大爺 

Unity動畫知識之二:Animator動畫狀态機

  提出的合理要求。一個狀态下會有兩種支線狀态,此時的狀态機切換邏輯還是在一個國小畢業的了解水準,接下來我們說個國中畢業的。

Unity動畫知識之二:Animator動畫狀态機

  在狀态機視窗空白處右鍵,create sub-state machine 建立名為次級狀态機的東西,恩,這麼low雞的名字我們肯定不會用的,我們管他叫灰色六邊形狀态機好了

Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機

  這個狀态機的作用是,他可以建立另外一套次級狀态。舉例來說,act遊戲中角色站着的時候有站跑攻擊防禦,下蹲的時候則是另外一套站跑攻擊防禦。下蹲就是次級狀态,因為下蹲跑,下蹲攻擊這些動作都是基于下蹲這個狀态,是以他們可以獨立成為一個次級狀态機。

Unity動畫知識之二:Animator動畫狀态機

  輕按兩下灰色六邊形狀态機,進入次級狀态機編輯頁面。标題欄可以看到下蹲頁簽在基礎層之下。這裡簡單羅列了幾個下蹲的動畫狀态便于了解。這是一個比較有要求的策劃老爺

Unity動畫知識之二:Animator動畫狀态機

  提出的高标準的要求,比如下蹲攻擊防禦被擊,空中攻擊防禦被擊,中毒狀态下攻擊防禦被擊,殘血狀态下攻擊防禦被擊等等不同的次級狀态。。。恩 恭喜你國中畢業,完成了九年義務教育成為了一個普通的動畫師 

Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機

  現在到了高中的課程了,你遇到了一個有理想的策劃爸爸 

Unity動畫知識之二:Animator動畫狀态機

  ,他向你提出了一個無理要求。當搖桿搖杆輕輕向前推的時候角色緩慢的移動,全力向前推的時候角色快速跑動;當搖杆左右輕推的時候,角色小幅度的轉向,全力左右推的時候,角色大幅度轉向。放下那條狗,不要急着x它 

Unity動畫知識之二:Animator動畫狀态機

  。能解決無理要求,這就是你和普通動畫師的差別。在别人日了狗日了整個動物園的時候,你完成了高中畢業。。。

  選擇“移動”這個灰色矩形狀态機 create new blendtree in state 建立一個行為樹。輕按兩下進入行為樹編輯頁面

Unity動畫知識之二:Animator動畫狀态機

  為了滿足這個有理想的策劃爸爸,你需要做好以下動畫,待機、待機小轉、待機大轉、走、走小轉、走大轉、跑、跑小轉、跑大轉。轉彎的動畫可以隻做一側,另一側用鏡像動畫實作。然後把這些動畫連結給行為樹。屬性面闆,設定行為樹屬性為2D freedom cartesian,這裡不一一介紹幾個行為樹屬性标簽,大家可以自行嘗試一下,其他的标簽都是在此基礎上做減法很容易了解。

Unity動畫知識之二:Animator動畫狀态機

  在motiom欄填好動畫,posX、posY設定好坐标,時鐘圖示表示速度,小人圖示表示動畫鏡像。

  這裡的坐标設定0,0原點是待機,直線向上是走,再向上是跑;原點橫向位置,近距離的是小轉動畫,遠距離的是大轉動畫,走跑也是如此。圖中紅色點表示目前角色的狀态,因為在0和1之間有無限個數字,是以這個狀态是無限的,他是多個狀态的融合,最多可以同時擷取四個動畫狀态而融合成為一個全新的中間态。做完這一步,就需要程式老爺幫忙将搖杆推動的幅度映射到這個平面上,就可以實作有理想的策劃爸爸提出的需求了。到此,閣下高中畢業,是一個了不起的人才!但是我知道你沒那麼容易滿足,接下來我們學習一點高中火箭提高班的課程吧。

Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機

  剛剛那個有理想的策劃爸爸一拍腦門忽然有了個絕妙的點子,當角色跑到最快的狀态後,他可以爆氣,進入狂暴狀态,但是随着狂暴值減少,要逐漸變回正常跑。此時,我們要在跑步狀态機下,加入一個線性行為樹。是的沒錯,行為樹的子級也可以是行為樹,如果你的策劃足夠睿(bian)智(tai),行為樹可以成為一個真正的,擁有無限分支的“樹”。

  最後,給大家看一個比較複雜的狀态機,它包含了一個主狀态,五個次級狀态,N個狀态機,還有一個行為樹,恩,高中火箭提高班大抵如此……

Unity動畫知識之二:Animator動畫狀态機

  科科,你不會以為真的結束了吧,我是那種隻能教到高中水準的人麼,咱給你來點大學的!嘛

  層動畫 看起來沒有什麼新鮮的 基本每個動畫軟體都會提供層動畫 但是unity的層動畫是在狀态機這裡 每加一個層 都可以配置一套全新的狀态機!

  終于迎來了這一天了。。。你戰勝了有理想的策劃爸爸,自以為從此天下無敵,縱橫遊戲研發界立于不敗之地。沒想到他還是出現了。

  是的就是他,他叫做外行老闆。。 

Unity動畫知識之二:Animator動畫狀态機

  。

  他提出了一個可實作的小目标,要你給每個動畫配上表情。

Unity動畫知識之二:Animator動畫狀态機

  一個跑步要有喜怒哀樂憂思恐各種表情

Unity動畫知識之二:Animator動畫狀态機

  ,一個待機也要有喜怒哀樂憂思恐各種表情。你反抗說這樣資源要多出N倍,他表示我們做的是精品高品質遊戲,不在乎資源量。你狠狠地吸了一口利群,表示這樣工作量也會翻倍,他表示如果你不行就直說,他不介意換人“不過是美工而已,到處都招的到啊”。在你的人生彷徨無助的時候,你的老朋友《unity遊戲動畫 從入門到住院》永遠辣麼堅挺的在你身後頂你! 

Unity動畫知識之二:Animator動畫狀态機

  不就是表情嗎!建立一個動畫層!搭建一套表情的狀态機!然後做一套喜怒哀樂憂思恐的表情!注意!隻要一套!然後丢給程式!讓他寫好調用邏輯!就可以完美實作每個動畫都有各種表情了!

  這時老闆又提出了一點小想法 

Unity動畫知識之二:Animator動畫狀态機

  ,聽說換裝很賺錢,我們也要做換裝!而且要每個衣服針對不同的動作都有對應的動畫!什麼?項目到中期了你才跟我說要加換裝?

  本寶寶捅死你哦 

Unity動畫知識之二:Animator動畫狀态機

  别急别急,我們可以!我們隻需要建立一個衣服的層,建立與身體動畫一一對應的狀态機,然後把衣服的動畫配置好就行了!恩這個方法是需要巨大的工作量和資源量。但是項目中期才提出換裝需求的話,這幾乎是唯一解!

  至此,老闆已經對你刮目相看 

Unity動畫知識之二:Animator動畫狀态機

!但是他昨晚喝酒的時候又想到了一件事!“我們這個遊戲呢有各種戰鬥天使,有的長了兩個翅膀,有的長了八個翅膀,最厲害的戰鬥天使大哥長了十六個翅膀,但是他們的身體動畫都是一樣的!小夥子你想想辦法能讓他們公用身體動畫資源,然後每個人用各自的翅膀動畫!這也是聽你的想法節省資源嘛。”(别問我為什麼還不辭職,因為你窮啊!)

  好的,怎麼做!我們要給每個角色建立一個狀态機,每個狀态機分兩層。一層是身體動畫,大家公用一套動作,一層是翅膀動畫,大家用各自單獨導出的動作。簡單嗎,就這麼簡單。呵呵呵呵嘤嘤嘤嘤 。。。我特麼到底經曆了什麼才學會的這些啊!

Unity動畫知識之二:Animator動畫狀态機

  layers頁面下點選右側加号建立層

Unity動畫知識之二:Animator動畫狀态機

  點選每個層的齒輪可以設定層屬性,由上到下分别是權重(這一層對動畫影響的權重值)、遮罩(身體遮罩,用來遮蓋身體各部分動畫如表情動畫需要遮蓋掉頭部以下所有部位)、混合模式(可選疊加或者覆寫,字面意思)

Unity動畫知識之二:Animator動畫狀态機

  這裡再給大家額外介紹一種override controller。就叫他加号狀态機好了,建立它跟建立正常狀态機一樣。它相當于在一個原有的狀态機外部加一個殼,這樣我們就可以完美的繼承下來原有狀态機的所有配置,并且可以是以更改、從新指定原狀态機任意位置的動畫。

Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機
Unity動畫知識之二:Animator動畫狀态機