UE5.2.1 為默認(rèn)角色添加蹲伏行走狀態(tài)和沖刺狀態(tài)

一、UE,啟動
打開UE,選擇游戲->第三人稱模板,項目默認(rèn)設(shè)置選擇藍圖,不帶初學(xué)者內(nèi)容包(省得占硬盤空間),選擇一個合適的路徑,取好項目名稱,然后點擊右下方的“創(chuàng)建”按鈕創(chuàng)建第三人稱模板工程;

然后便可進入到我們的工程里了;

如果點擊進入第三人稱關(guān)卡后發(fā)現(xiàn)場景一片白,可以這樣處理:
在右側(cè)靠上的世界大綱窗口中選中PostProcessVolume,這個就是后期處理盒子,選中之后在下方細(xì)節(jié)面板修改其曝光補償值,一般調(diào)到1左右就可以,根據(jù)自己需要來調(diào)節(jié)。

二、導(dǎo)入所需動畫資產(chǎn)
在這個案例中,需要導(dǎo)入角色蹲伏的待機動畫和蹲伏行走的動畫,動畫資產(chǎn)放在文末和評論置頂;
選中好Crouch_Idle和Crouch_Walk的FBX文件后,鼠標(biāo)按住往內(nèi)容瀏覽器里拖入,這時會彈出一個窗口,提示我們設(shè)置FBX導(dǎo)入選項,如下圖所示

然后我們其他的不用管,只需要為我們想要導(dǎo)入的動畫選擇骨骼就行,這里選擇SK_Mannequin,點擊導(dǎo)入所有

導(dǎo)入完成后,雙擊打開Crouch_Walk動畫序列,在資產(chǎn)詳情頁面設(shè)置啟用根運動和強制根鎖定,設(shè)置完之后關(guān)閉即可。

三、修改動畫藍圖
雙擊打開ABP_Manny動畫藍圖,進入到動畫圖表,然后雙擊Main States狀態(tài)機

進入到狀態(tài)機內(nèi)部后,右鍵單擊圖表空白處并選擇添加狀態(tài)

為新添加的狀態(tài)命名,由于是要做蹲伏行走,所以這里命名為Crouch,表示蹲伏狀態(tài),在其下方的雙向符號表示過度條件,比如左邊表示角色從Locomotion過渡到Crouch,而右邊表示角色從Crouch過渡到Locomotion

接下來先對過渡條件進行設(shè)置,在動畫藍圖中新建bool類型變量,并命名為IsCrouch?(命名隨意,根據(jù)自己喜好即可)

設(shè)置Locomotion到Crouch過渡條件:

設(shè)置Crouch到Locomotion過渡條件:

設(shè)置完過渡條件后可以對Crouch狀態(tài)進行編輯,在編輯Crouch狀態(tài)前,我們需要新建一個1D混合空間,用于混合Crouch_Idle和Crouch_Walk動畫,如下圖所示(注意骨骼網(wǎng)格體選擇SK_Mannequin):

建完混合空間后,取個名,這里命名為CrouchBlendSpace1D,雙擊打開混合空間CrouchBlendSpace1D,在左側(cè)資產(chǎn)詳情頁面,修改水平坐標(biāo)名稱為Speed,最小軸值為0,最大軸值為350,并在下方將Croule_Idle動畫序列和Crouch_Walk動畫序列拖入至網(wǎng)格中,其中Crouch_Idle對應(yīng)的軸值為0,Crouch_Walk對應(yīng)的軸值為350,設(shè)置完之后保存關(guān)閉即可

完成之后,返回到之前的ABP_Manny動畫藍圖中,進入到Crouch狀態(tài),在右側(cè)資產(chǎn)瀏覽器中將剛剛做好的混合空間CrouchBlendSpace1D往圖表中拖,如下圖所示:

然后新建一個浮點類型變量,用來存儲從角色藍圖中傳來的速度值,取名為Speed,并將其作為輸入值傳至混合空間,如下圖所示:

四、修改第三人稱角色藍圖
打開BP_ThirdPersonCharacter藍圖類,現(xiàn)在需要為其添加控制蹲伏相關(guān)的藍圖,首先我們?nèi)バ陆ㄒ粋€輸入操作IA_Crouch,表示輸入蹲伏,

在數(shù)據(jù)資產(chǎn)中添加映射,按下左ctrl鍵時觸發(fā),設(shè)置完后保存

返回到BP_ThirdPersonCharacter,添加如下藍圖:
其中Crouched變量需要自己創(chuàng)建,默認(rèn)值設(shè)置為false,這個變量后來是要傳入到動畫藍圖中的,用來設(shè)置動畫藍圖中的IsCrouch?變量;Crouched為真時,表示角色處于蹲伏狀態(tài)(Crouch),將其最大行走速度改為350,否則表示角色處于直立狀態(tài)(Locomotion),將其最大行走速度改為500,也就是默認(rèn)值

回到ABP_Manny動畫藍圖,進入事件圖表,在事件藍圖更新動畫節(jié)點后的序列節(jié)點中添加一個輸出引腳,然后編寫如下藍圖,表示獲取角色的速度,將其傳至動畫藍圖中的Speed變量中,

看不清,放大一些

同時,還需要拿到角色藍圖中的Crouched變量,將其值賦給動畫藍圖中的IsCrouch?變量,在事件開始運行處,做一個類型轉(zhuǎn)換,拿到第三人稱角色

看不清,放大一些

然后拿到Crouched變量,將其值賦給IsCrouch?變量,藍圖如下:

編譯保存后即可運行,但這時角色在蹲伏時按住空格鍵跳時還是保存蹲伏狀態(tài),我們希望按下空格鍵時角色取消蹲伏狀態(tài),那么我們可以這么做:
在BP_ThirdPersonCharacter中添加一個自定義事件,命名為“啟用/解除蹲伏”,并將其連至Branch分支,如下圖所示:

然后找到控制跳躍的藍圖,將其修改成如下形式,表示當(dāng)角色處于蹲伏狀態(tài)時,先解除蹲伏狀態(tài)再跳躍,否則直接跳躍:

編譯保存后即可正常運行啦。
五、添加沖刺狀態(tài)
首先找到MM_Run_Fwd動畫序列,復(fù)制一份出來,改個名字為MM_Sprint_Fwd

雙擊打開MM_Sprint_Fwd,修改比率范圍為1.3,可以看到角色步伐明顯加快,保存

打開BS_MM_WalkRun混合空間,修改最大軸值為750,并將MM_Sprint_Fwd拖入下方網(wǎng)格中,其對應(yīng)的軸值為750,設(shè)置完后保存:

回到BP_ThirdPersonCharacter中寫關(guān)于控制沖刺的藍圖,在寫之前,同樣先添加輸入操作:

添加映射

在BP_ThirdPersonCharacter中編寫如下藍圖,表示角色在行走時按住F鍵即可沖刺,松開F鍵時取消沖刺:

(把網(wǎng)格體換成SK_Manny,使用的動畫藍圖換位ABP_Manny,不然不容易看到效果)
編譯保存即可運行
六、一些小BUG修理
角色在沖刺時不可以蹲伏,于是將處理蹲伏的藍圖修改如下:

角色在蹲伏時不可沖刺,于是將處理沖刺的藍圖修改如下:

以上完成后,就可以實現(xiàn)角色沖刺,正常跑步,以及蹲伏行走狀態(tài)之間的自然切換了。
蹲伏動畫連接:
鏈接:https://pan.baidu.com/s/1c3SiIKS3nPKcrDAp9U2-GA?
提取碼:waao