今天檢錯Opsive的時候,無意間看到有人把我的文章轉到騰訊的文章版面去了,雖然沒有註明原文地址,不過看到自己的文章被轉載,還是有點小激動的,於是決定今天在寫一篇:)
爲了文章觀感,圖片就不加水印了,希望轉載的人自覺填上原文地址,WangHaoDiablo原創文章:)
實戰:使用UCC做一個跳舞的邏輯
-
需求:玩家按下逗號,開始跳舞,再按下一次逗號,停止跳舞。
-
創建一個類
using UnityEngine;
using Opsive.UltimateCharacterController.Character.Abilities;
public class DancingAbility : Ability
{
}
空類即可,不需要任何代碼,如果判定,當玩家試圖移動時停止跳舞,則需要填寫代碼,暫時,只完成上面需求就好,這個主要是用來,理解UCC複雜的動系統,是如何運作的,知道這個原理,我就可以很輕易的去搞道具,武器什麼的了。
-
填寫Inspector
-
我吧Dancing Ability配置到優先級比較高的位置。
-
觸發類型我設置爲按下一個按鈕
-
停止類型我設置爲再次按下一個按鈕
-
輸入行爲我設置爲Action。
-
最爲重要的,Ability Index 要設置爲 102,這個值不可以和其他值重合。
-
獲取免費動畫
Maxamo上面有很多免費動畫,大多隻是Humanoid動畫,非常便利
我選了這個跳舞的動畫
-
編輯Animator
先看看UCC的分層規則。
它使用了多個Avatar Mask,Avatar Mask是Unity用來做動作融合的遮罩功能。這裏比較常用的是上下身的區分,比如你想要一個移動射擊功能,完全可以把射擊瞄準的上半身,和全局播放上半身的移動動作合成一個移動射擊。上半身的瞄準動作覆蓋下半身的移動動作即可。
然後跳舞是一個全身動作。
我們需要在Full Body Layer增加一個子狀態機。
進入到Dancing子狀態
首先將Dancing動畫放進去,並按下圖連線,在這之前記得把他換恆Humanoid,並設置好avatar,這裏就不贅述了。
設置AnyState 到Dancing State的Transition
兩個重要的條件
1-AbilityIndex 等於 102,我們剛剛填到Inspector裏面的值
2-一個Trigger AbilityChange。這個是必填項。不用多問了。
結束跳舞,要配置Dancing到Exit的transition
這裏,要控制AbilityIndex 不等於102。當Ability結束的時候
-
添加Input配置文件
這樣按下逗號的時候,就會觸發Dance了。
最終效果:
按下逗號之後,這個傻不拉幾的假人就開始跳舞了。