UE5角色階段01
解決角色動(dòng)畫(huà)中某部位異常問(wèn)題,可以先把綁定控制器下了看看能不能解決問(wèn)題,如果發(fā)現(xiàn)問(wèn)題基本解決那大致可以判斷為是IK的位置與骨骼的位置不同,還可以從骨骼樹(shù)去檢查是否是這個(gè)問(wèn)題導(dǎo)致的。如果是由于IK位置不正確導(dǎo)致的,則調(diào)整IK位置與對(duì)應(yīng)骨骼位置即可。


2.混合空間是一種用于定義動(dòng)畫(huà)過(guò)渡和混合的方法,當(dāng)只考慮一個(gè)參數(shù)對(duì)動(dòng)畫(huà)的影響時(shí)應(yīng)該使用1D,當(dāng)有2個(gè)或多個(gè)參數(shù)時(shí)應(yīng)該考慮使用2D。因?yàn)檫@次制作的持槍跑步動(dòng)畫(huà)只考慮水平速度的影響,所以使用的是混合空間1D。在制作混合空間1D時(shí),要將Idle動(dòng)畫(huà),行走動(dòng)畫(huà)和沖刺動(dòng)畫(huà)分別放置其中并調(diào)整對(duì)應(yīng)的速度值(這里在調(diào)整時(shí)可以使用UE5自帶的分析器)。



3.利用按鍵實(shí)現(xiàn)奔跑和步行。
①首先做好映射,可以使用之前的操作映射也可以用增強(qiáng)映射。(這里用的增強(qiáng)映射)
②提前設(shè)置好角色的最大移動(dòng)速度為313(混合空間1D中的中間速度),然后利用“Flip Flop”節(jié)點(diǎn)實(shí)現(xiàn)按鍵時(shí)狀態(tài)的切換。(速度的值與剛才混合空間1D給出的分析速度對(duì)應(yīng))
③這里需要注意一點(diǎn),因?yàn)槿宋镒畛醯囊苿?dòng)速度為313(步行),所以Flip Flop的A引腳應(yīng)該連接到661速度,避免出現(xiàn)連續(xù)按兩次shift才能切換走路和奔跑狀態(tài)的情況。



4.制作對(duì)應(yīng)的持槍跳躍動(dòng)畫(huà)。
①通過(guò)觀察可以發(fā)現(xiàn)人物的跳躍分為以下幾個(gè)部分,并且每部分都有對(duì)應(yīng)的動(dòng)畫(huà)。

②當(dāng)自己獲取的跳躍動(dòng)畫(huà)是一個(gè)完整的動(dòng)畫(huà)時(shí),我們就需要通過(guò)UE5對(duì)其進(jìn)行拆分。在對(duì)Sequence文件進(jìn)行編輯時(shí)可以通過(guò)拖拽時(shí)間軸進(jìn)行裁切,然后烘焙出對(duì)應(yīng)的動(dòng)畫(huà)序列并保存即可。


③最后把動(dòng)畫(huà)放入對(duì)應(yīng)的狀態(tài)進(jìn)行替換即可。

5.實(shí)現(xiàn)人物蹲伏
①首先,創(chuàng)建對(duì)應(yīng)的輸入操作使得按下按鍵可以決定角色是否蹲伏,此時(shí)只有膠囊體是蹲下的,并沒(méi)有對(duì)應(yīng)的蹲伏動(dòng)畫(huà)。
②然后,創(chuàng)建變量使得玩家輸入對(duì)應(yīng)按鍵時(shí),動(dòng)畫(huà)藍(lán)圖能夠做出對(duì)應(yīng)的響應(yīng)。這里需要在動(dòng)畫(huà)藍(lán)圖中創(chuàng)建變量并在角色藍(lán)圖中調(diào)用。(在ABP中創(chuàng)建布爾變量“IsCrouching”,在角色藍(lán)圖中調(diào)用并賦值)


③創(chuàng)建對(duì)應(yīng)的狀態(tài)機(jī)并匹配動(dòng)畫(huà)。
第一步:要明確蹲伏狀態(tài)可以與Locomotion中的狀態(tài)進(jìn)行切換,這里新建狀態(tài)“Crouching”用于做角色的蹲伏,“To Crouch”可以理解為進(jìn)入蹲伏狀態(tài),該狀態(tài)別名應(yīng)包括Locomotion的內(nèi)容,因?yàn)長(zhǎng)ocomotion可以轉(zhuǎn)化為Crouching。
第二步:編寫(xiě)對(duì)應(yīng)的轉(zhuǎn)化規(guī)則,從“To Crouch”到“Crouching”應(yīng)該滿足布爾變量“IsCrouching”的值為真,與之相反的從“Crouching”到“Locomotion”應(yīng)該滿足布爾變量“IsCrouching”的值為假。



第三步:對(duì)“Croushing”的內(nèi)部進(jìn)行編輯,這里應(yīng)注意蹲伏應(yīng)有兩種狀態(tài),即蹲伏待機(jī)和蹲伏移動(dòng),所以這里布置了一個(gè)狀態(tài)機(jī),方便后續(xù)觀察和修改藍(lán)圖。(這里也可以直接連接)在CrouchState中從入口處連接了兩個(gè)狀態(tài),這兩個(gè)狀態(tài)就是蹲伏待機(jī)和蹲伏移動(dòng)。


第四步:編寫(xiě)狀態(tài)見(jiàn)的切換規(guī)則和配置對(duì)應(yīng)動(dòng)畫(huà)。(Walk to Idle的規(guī)則與下面的速度判斷正好相反),動(dòng)畫(huà)部分直接找到對(duì)應(yīng)的動(dòng)畫(huà)進(jìn)行輸出即可。(在配置動(dòng)畫(huà)時(shí)務(wù)必勾選循環(huán)播放)


6.添加武器:在UE5中添加武器可以理解為在人物對(duì)應(yīng)的骨骼處開(kāi)槽,然后將對(duì)應(yīng)的武器插入其中,通過(guò)不斷調(diào)整插槽的位置使得人物拿武器的姿勢(shì)更加自然。
第一步:給角色的骨骼體開(kāi)槽

第二步:添加武器藍(lán)圖,這里可以新建一個(gè)藍(lán)圖并將對(duì)應(yīng)的網(wǎng)格體添加到武器藍(lán)圖中。這里也可以直接將武器的網(wǎng)格體直接拖入人物藍(lán)圖中,但是在實(shí)際操作中這樣做可能會(huì)使得人物藍(lán)圖過(guò)于臃腫(因?yàn)榇藭r(shí)編輯武器的動(dòng)畫(huà)屬性之類的都需要在人物藍(lán)圖中編輯了),所以一般都會(huì)使武器以藍(lán)圖的形式添加進(jìn)來(lái)。

第三步:通過(guò)調(diào)整插槽位置完成武器的添加(可以在調(diào)整插槽時(shí)添加武器預(yù)覽資產(chǎn),方便觀察效果)


7.持槍/收槍操作的設(shè)置及對(duì)應(yīng)動(dòng)畫(huà)的設(shè)置
第一步:尋找合適的動(dòng)畫(huà)。這里需要利用動(dòng)畫(huà)蒙太奇,利用動(dòng)畫(huà)蒙太奇播放動(dòng)畫(huà)遠(yuǎn)比直接播放動(dòng)畫(huà)更方便調(diào)整和調(diào)用各種參數(shù)(還可以使用動(dòng)畫(huà)通知完成一些功能)。選定合適的動(dòng)畫(huà)序列生成蒙太奇并進(jìn)行編輯,這里在動(dòng)畫(huà)蒙太奇中配置兩個(gè)插槽,一個(gè)命名為“Fullbody”另一個(gè)命名為“Upperbody”。這兩個(gè)插槽的名稱并不影響實(shí)際的使用,只是方便使用者在后續(xù)的動(dòng)畫(huà)藍(lán)圖設(shè)置時(shí)區(qū)分不同插槽所控制的動(dòng)畫(huà)。

第二步:跟之前一樣創(chuàng)建對(duì)應(yīng)的輸入操作,這時(shí)點(diǎn)擊對(duì)應(yīng)的按鍵并不能夠完成動(dòng)畫(huà)蒙太奇的播放,我們還需要去動(dòng)畫(huà)藍(lán)圖內(nèi)進(jìn)行編輯,使其可以正確的輸出。

第三步:從01-03的內(nèi)容均是進(jìn)行對(duì)應(yīng)動(dòng)作的緩存,此時(shí)如果直接將03輸出那么人物只能移動(dòng)或者切槍,并不能夠做到移動(dòng)中切槍。所以我們需要對(duì)移動(dòng)和切槍這兩個(gè)姿勢(shì)進(jìn)行混合。

在04中,我們利用“每個(gè)骨骼的分層混合”節(jié)點(diǎn),將02中的各種動(dòng)作內(nèi)容作為主姿勢(shì),將03中的切槍動(dòng)畫(huà)作為混合姿勢(shì)進(jìn)行混合,這樣可以得到移動(dòng)中切槍的效果。

這里還需要注意一點(diǎn),因?yàn)橄到y(tǒng)并不會(huì)因?yàn)槟銓?duì)緩存姿勢(shì)的命名或者蒙太奇中插槽的命名而對(duì)你想編輯的內(nèi)容進(jìn)行識(shí)別,所以我們需要對(duì)“每個(gè)骨骼的分層混合”節(jié)點(diǎn)的參數(shù)進(jìn)行調(diào)整,讓UE知道我們要以何種方式混合這兩種姿勢(shì)。因?yàn)槲覀兊囊苿?dòng)切槍是上半身做切槍動(dòng)作,下半身維持運(yùn)動(dòng)或待機(jī)狀態(tài),所以我們這里選擇的骨骼是“Spine_01”(可以理解為以這塊骨骼為節(jié)點(diǎn),一部分執(zhí)行主姿勢(shì),一部分執(zhí)行混合姿勢(shì)),混合深度調(diào)整為2。

接下來(lái)我們需要讓角色在靜止時(shí)執(zhí)行待機(jī)或靜止切槍動(dòng)作,在移動(dòng)時(shí)執(zhí)行移動(dòng)切槍動(dòng)作。這里使用了“按布爾混合姿勢(shì)”這一節(jié)點(diǎn)(在這個(gè)節(jié)點(diǎn)中,如果布爾值為真則輸出真姿勢(shì),如果為假則輸出假姿勢(shì))。我們將移動(dòng)切槍作為真姿勢(shì),將切槍動(dòng)作作為假姿勢(shì)(這里調(diào)用03中的切槍緩存的理由是在03中人物的運(yùn)動(dòng)姿勢(shì)和蒙太奇中的切槍動(dòng)畫(huà)是直接相連的,兩者不會(huì)進(jìn)行混合。在這個(gè)情況下,人物只能移動(dòng)或者只能切槍,這樣的姿勢(shì)用來(lái)做靜止?fàn)顟B(tài)最合適)。

在設(shè)置布爾值時(shí),我們新建了一個(gè)布爾變量,并在動(dòng)畫(huà)藍(lán)圖中對(duì)其賦值。



到此已經(jīng)完成切槍動(dòng)畫(huà)的正常播放。
第四步:在播放完對(duì)應(yīng)的收槍動(dòng)作后,人物的武器并不會(huì)吸附到背部。這里可以先把對(duì)應(yīng)的插槽準(zhǔn)備好。

然后需要準(zhǔn)備一個(gè)變量、動(dòng)畫(huà)通知之類的東西,使得人物在進(jìn)行完對(duì)應(yīng)的姿勢(shì)后武器可以處于正確的位置。這里制作了對(duì)應(yīng)的動(dòng)畫(huà)通知,當(dāng)播放到動(dòng)畫(huà)的對(duì)應(yīng)位置將會(huì)發(fā)出一個(gè)通知,在動(dòng)畫(huà)藍(lán)圖中通過(guò)這個(gè)通知調(diào)用角色藍(lán)圖中的事件達(dá)成武器位置的變換。



動(dòng)畫(huà)藍(lán)圖這邊的工作做完了,接下來(lái)該去第三人稱角色藍(lán)圖中進(jìn)行這兩個(gè)事件的編輯了。這邊先是在將武器的骨骼體存了一個(gè)變量,并且將其位置初始化到角色的背部。

然后將武器位置對(duì)應(yīng)好相應(yīng)的自定義事件。

做完之后武器能夠處于正確的位置,但是發(fā)現(xiàn)武器無(wú)論處于哪個(gè)位置,人物始終是端著槍的姿勢(shì),在動(dòng)畫(huà)藍(lán)圖對(duì)對(duì)應(yīng)的姿勢(shì)進(jìn)行布爾混合。這里會(huì)發(fā)現(xiàn)需要兩個(gè)布爾值進(jìn)行判斷,一個(gè)用來(lái)判斷角色是否移動(dòng),另一個(gè)用于判斷武器現(xiàn)在的位置。


對(duì)對(duì)應(yīng)的姿勢(shì)進(jìn)行布爾混合,使得持有武器和未持有武器時(shí)的動(dòng)畫(huà)不同。


到目前為止想要的功能都實(shí)現(xiàn)了,除了蹲伏狀態(tài)的不持槍動(dòng)畫(huà)(因?yàn)槲覜](méi)有人物不持槍的動(dòng)畫(huà),而且我目前不會(huì)自己做角色動(dòng)畫(huà))

8.細(xì)節(jié)調(diào)整:做完上面的步驟后發(fā)現(xiàn)角色收槍動(dòng)畫(huà)手并沒(méi)有達(dá)到對(duì)應(yīng)的武器插槽位置,導(dǎo)致有種武器被吸鐵石吸上去的感覺(jué),這里將收槍動(dòng)畫(huà)在Sequence中編輯一下。

找到手伸到背部最高的那一幀,通過(guò)不斷調(diào)整骨骼的位置使得角色的手部處于一個(gè)正確的位置。接著打開(kāi)曲線刪掉調(diào)整的那一幀附近的幀,最后選中附近剩余的幀進(jìn)行三次插值運(yùn)算讓UE自動(dòng)補(bǔ)全動(dòng)畫(huà)即可。

結(jié)束動(dòng)畫(huà)編輯后,導(dǎo)出到序列替換原來(lái)蒙太奇中的動(dòng)畫(huà)序列即可。