本文為B站系列教學視頻 《UE5_C++多人TPS完整教程》 —— 《P44 奔跑混合空間(Running Blending Space)》 的學習筆記,該系列教學視頻為計算機工程師、程序員、游戲開發者、作家(Engineer, Programmer, Game Developer, Author) Stephen Ulibarri 發布在 Udemy 上的課程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻譯版,UP主(也是譯者)為 游戲引擎能吃么。
文章目錄
- P44 奔跑混合空間(Running Blending Space)
- 44.1 創建奔跑混合空間藍圖類
- 44.2 制作 “Leaning” 動畫
- 44.3 Summary
P44 奔跑混合空間(Running Blending Space)
本節課我們將創建一個奔跑混合空間,這樣我們的人物角色就會不會在進行移動時只是四處“滑動”(Slide Around)。
44.1 創建奔跑混合空間藍圖類
-
在虛幻引擎內容瀏覽器中打開 “
/Game/Contents/Assets/Animation
” 目錄,搜索 “Jog
”,可以看到我們已經有了向前、向后、向左、向右四個方向慢跑的動畫資產,我們可以將其用于制作奔跑混合空間。
-
在 “
/Game/Contents/Blueprints/Character/Animation
” 目錄下以 “SK_EpicCharacter_Skeleton
” 為骨骼創建混合空間藍圖類,命名為 “EquippedRun
”
-
打開 “
EquippedRun
” 混合空間編輯器,在左側 “資產詳情”(Asset Details)面板的 “Axis Settings
” 選項卡下展開 “水平坐標”(Horizontal Axis)和 “垂直坐標”(Vertical Axis)選項。在 “水平坐標”(Horizontal Axis)中設置 “名稱”(Name)為 “YawOffset”,并設置 “最小軸值”(Minimum Axis Value)為 -180,“最大軸值”(Maximum Axis Value)為 180;同理在 “垂直坐標”(Vertical Axis)中設置 “名稱”(Name)為 “Leaning”,并設置 “最小軸值”(Minimum Axis Value)為 -180,“最大軸值”(Maximum Axis Value)為 180。它們將作為奔跑混合空間的度量(Measures)。
-
在中間視口面板下的坐標圖中添加動畫資產,坐標中心原點是我們向前奔跑的時刻,因此在右側“資產瀏覽器”(Asset Browser)中拖拽向前慢跑的動畫資產 “
Jog_Fwd_Rifle
” 的同時按下鍵盤 Shift 鍵,將其放置在坐標 (0.0, 0.0) 處生成采樣點。
注意:
如果沒有在拖拽動畫資產的同時按下 Shift 鍵進行放置,生成的采樣點無法精確的落在坐標中心遠點上,可能會不符合我們的需求,可以點擊采樣點后在坐標圖上方設置坐標軸值 “YawOffset
” 和 “Leaning
”。
-
分別將向左慢跑的動畫資產 “
Jog_Lft_Rifle
” 和向右慢跑 “Jog_Rt_Rifle
” 放置在 (-90.0, 0.0) 和 (90.0, 0.0) 處,然后將向后慢跑的動畫資產 “Jog_Bwd_Rifle
” 放置在 (-180.0, 0.0) 和 (180.0, 0.0) 處。
-
這里的水平坐標軸 “
YawOffset
” 映射到人物角色奔跑方向的朝向,當我們按下 Ctrl 鍵并長按鼠標左鍵在水平坐標軸上進行拖動時,可以展示人物角色了向前、向后、向左、向右四個方向慢跑的動畫資產。
44.2 制作 “Leaning” 動畫
-
由于垂直坐標軸 “
Leaning
” 上并未添加任何動畫資產,我們需要制作與之有關的動畫,使得人物角色在奔跑時可以傾斜身體。在內容瀏覽器中拷貝(Duplicated)向前慢跑的動畫資產 “Jog_Fwd_Rifle
”,可以看到內容瀏覽器中生成了新的動畫資產 “Jog_Fwd_Rifle1
”。
-
雙擊打開 “
Jog_Fwd_Rifle1
” 動畫資產編輯器,在左側骨骼樹(Skeleton Tree)中選中骨骼根節點 “Root
”,在視口中通過按下 W、S、A、D 鍵并配合鼠標拖動將攝像機視角移動到人物角色后方,在視口右上方點擊 “選擇并旋轉對象
”,將骨骼根節點 “Root
” 向右旋轉 20°,可以看到人物角色在向前慢跑時身體是向右傾斜的。
-
在工具欄中點擊 “+關鍵幀”(+Key),為動畫添加關鍵幀,點擊后可以看到下方時間軸中出現了名為 “
root
” 的 “Additive圖層軌道”(Additive Layer Tracks)。
-
在工具欄中 “創建資產”(Create Asset),選擇 “創建動畫”(Create Animation),選擇 “當前動畫”(Current Animation),再選擇 “預覽網格體”(Preview Mesh),隨后在彈出的對話框中將動畫資產命名為 “
Jog_Fwd_Lean_R
” 并保存到 “/Game/Contents/Assets/Animation
” 目錄下。
-
在內容瀏覽器中可以看到新創建的動畫資產 “
Jog_Fwd_Lean_R
”,點擊 “保存所有”(Save All),隨后 “強制刪除”(Force Delete)動畫資產 “Jog_Fwd_Rifle1
”。
-
仿照步驟 1—6 的操作,創建向前向左傾斜慢跑的動畫資產。
-
回到 “
EquippedRun
” 混合空間編輯器,在右側“資產瀏覽器”(Asset Browser)中按下鍵盤 Shift 鍵的同時分別拖拽 “Jog_Fwd_Lean_R
” 和 “Jog_Fwd_Lean_L
”,將其放置在坐標 (0.0, 180.0) 和 (0.0, -180.0) 處生成采樣點。隨后在坐標軸中上下垂直移動光標,可以看到人物角色在向前跑動的同時身體可以發生傾斜。
-
仿照步驟 1—6 操作,創建向右慢跑 “
Jog_Rt_Rifle
” 向右傾斜和向左傾斜的動畫資產 “Jog_Rt_Lean_R
” 和 “Jog_Rt_Lean_L
”,并在坐標 (90.0, 180.0) 和 (90.0, -180.0) 處生成采樣點。
-
仿照步驟 1—6 操作,創建向右慢跑 “
Jog_Lt_Rifle
” 向右傾斜和向左傾斜的動畫資產 “Jog_Lt_Lean_R
” 和 “Jog_Lt_Lean_L
”,并在坐標 (-90.0, 180.0) 和 (-90.0, -180.0) 處生成采樣點。
-
仿照步驟 1—6 操作,創建向右慢跑 “
Jog_Bwd_Rifle
” 向右傾斜和向左傾斜的動畫資產 “Jog_Bwd_Lean_R
” 和 “Jog_Bwd_Lean_L
”,并在坐標 (180.0, 180.0)、(-180.0, 180.0) 和 (180.0, -180.0)、(-180.0, 180.0) 處生成采樣點。
44.3 Summary
本節課我們創建了人物角色裝備武器時的奔跑混合空間,為人物角色在不同方向和身體傾斜狀態下奔跑提供了流暢的動畫過渡。首先,在指定骨骼 “SK_EpicCharacter_Skeleton
” 上創建了混合空間藍圖類 “EquippedRun
”,并為其配置了水平坐標軸 “YawOffset
” 和垂直坐標軸 “Leaning
”,它們的最小軸值都設置為 -180,最大軸值都設置為 180。隨后,將已有的向前“Jog_Fwd_Rifle
”、向后 “Jog_Bwd_Rifle
”、向左 “Jog_Lft_Rifle
”、向右“Jog_Rt_Rifle
” 慢跑動畫資產精確放置到坐標軸的關鍵指定位置上生成采樣點。
接著,我們重點制作了支持垂直坐標軸 “Leaning
” 的傾斜奔跑動畫,使得人物角色在奔跑時身體會有小幅度的傾斜。通過拷貝基礎向前奔跑動畫 “Jog_Fwd_Rifle
”,在拷貝好的臨時動畫資產的編輯器中旋轉骨骼根節點 “Root
” 并添加關鍵幀,創建了向前向左傾 “Jog_Fwd_Lean_L
” 和向右傾 “Jog_Fwd_Lean_R
”的新動畫資產,然后刪除臨時動畫資產。此后,仿照上述步驟擴展應用到其他三個基礎方向后、左、右,分別創建了它們對應的左右傾斜動畫資產,并將這些新動畫作為采樣點添加到混合空間垂直坐標軸的兩端。
最終完成的奔跑混合空間 “EquippedRun
” 能根據 “
YawOffset” 和 “
Leaning`” 值動態混合,使角色在 360° 任意方向奔跑時,身體也能平滑地向左右傾斜。