《UE5_C++多人TPS完整教程》学习笔记43 ——《P44 奔跑混合空间(Running Blending Space)》


本文为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)](#P44 奔跑混合空间(Running Blending Space))
  • [44.1 创建奔跑混合空间蓝图类](#44.1 创建奔跑混合空间蓝图类)
  • [44.2 制作 "Leaning" 动画](#44.2 制作 “Leaning” 动画)
  • [44.3 Summary](#44.3 Summary)

P44 奔跑混合空间(Running Blending Space)

本节课我们将创建一个奔跑混合空间,这样我们的人物角色就会不会在进行移动时只是四处"滑动"(Slide Around)。


44.1 创建奔跑混合空间蓝图类

  1. 在虚幻引擎内容浏览器中打开 "/Game/Contents/Assets/Animation" 目录,搜索 "Jog",可以看到我们已经有了向前、向后、向左、向右四个方向慢跑的动画资产,我们可以将其用于制作奔跑混合空间。

  2. 在 "/Game/Contents/Blueprints/Character/Animation" 目录下以 "SK_EpicCharacter_Skeleton" 为骨骼创建混合空间蓝图类,命名为 "EquippedRun"

  3. 打开 "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)。

  4. 在中间视口面板下的坐标图中添加动画资产,坐标中心原点是我们向前奔跑的时刻,因此在右侧"资产浏览器 "(Asset Browser)中拖拽向前慢跑的动画资产 "Jog_Fwd_Rifle" 的同时按下键盘 Shift 键,将其放置在坐标 (0.0, 0.0) 处生成采样点。

    注意

    如果没有在拖拽动画资产的同时按下 Shift 键进行放置,生成的采样点无法精确的落在坐标中心远点上,可能会不符合我们的需求,可以点击采样点后在坐标图上方设置坐标轴值 "YawOffset" 和 "Leaning"。

  5. 分别将向左慢跑的动画资产 "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) 处。

  6. 这里的水平坐标轴 "YawOffset" 映射到人物角色奔跑方向的朝向,当我们按下 Ctrl 键并长按鼠标左键在水平坐标轴上进行拖动时,可以展示人物角色了向前、向后、向左、向右四个方向慢跑的动画资产。

44.2 制作 "Leaning" 动画

  1. 由于垂直坐标轴 "Leaning" 上并未添加任何动画资产,我们需要制作与之有关的动画,使得人物角色在奔跑时可以倾斜身体。在内容浏览器中拷贝(Duplicated)向前慢跑的动画资产 "Jog_Fwd_Rifle",可以看到内容浏览器中生成了新的动画资产 "Jog_Fwd_Rifle1"。

  2. 双击打开 "Jog_Fwd_Rifle1" 动画资产编辑器,在左侧骨骼树(Skeleton Tree)中选中骨骼根节点 "Root",在视口中通过按下 W、S、A、D 键并配合鼠标拖动将摄像机视角移动到人物角色后方,在视口右上方点击 "选择并旋转对象",将骨骼根节点 "Root" 向右旋转 20°,可以看到人物角色在向前慢跑时身体是向右倾斜的。

  3. 在工具栏中点击 "+关键帧 "(+Key),为动画添加关键帧,点击后可以看到下方时间轴中出现了名为 "root" 的 "Additive图层轨道 "(Additive Layer Tracks)。

  4. 在工具栏中 "创建资产 "(Create Asset),选择 "创建动画 "(Create Animation),选择 "当前动画 "(Current Animation),再选择 "预览网格体 "(Preview Mesh),随后在弹出的对话框中将动画资产命名为 "Jog_Fwd_Lean_R" 并保存到 "/Game/Contents/Assets/Animation" 目录下。

  5. 在内容浏览器中可以看到新创建的动画资产 "Jog_Fwd_Lean_R",点击 "保存所有 "(Save All),随后 "强制删除 "(Force Delete)动画资产 "Jog_Fwd_Rifle1"。

  6. 仿照步骤 1---6 的操作,创建向前向左倾斜慢跑的动画资产。

  7. 回到 "EquippedRun" 混合空间编辑器,在右侧"资产浏览器 "(Asset Browser)中按下键盘 Shift 键的同时分别拖拽 "Jog_Fwd_Lean_R" 和 "Jog_Fwd_Lean_L",将其放置在坐标 (0.0, 180.0)(0.0, -180.0) 处生成采样点。随后在坐标轴中上下垂直移动光标,可以看到人物角色在向前跑动的同时身体可以发生倾斜。

  8. 仿照步骤 1---6 操作,创建向右慢跑 "Jog_Rt_Rifle" 向右倾斜和向左倾斜的动画资产 "Jog_Rt_Lean_R" 和 "Jog_Rt_Lean_L",并在坐标 (90.0, 180.0)(90.0, -180.0) 处生成采样点。

  9. 仿照步骤 1---6 操作,创建向右慢跑 "Jog_Lt_Rifle" 向右倾斜和向左倾斜的动画资产 "Jog_Lt_Lean_R" 和 "Jog_Lt_Lean_L",并在坐标 (-90.0, 180.0)(-90.0, -180.0) 处生成采样点。

  10. 仿照步骤 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° 任意方向奔跑时,身体也能平滑地向左右倾斜。


相关推荐
winds~43 分钟前
【git】 撤销revert一次commit中的某几个文件
linux·c++
carver w1 小时前
MFC,C++,海康SDK,回调,轮询
开发语言·c++·mfc
王廷胡_白嫖帝1 小时前
Qt猜数字游戏项目开发教程 - 从零开始构建趣味小游戏
开发语言·qt·游戏
阳光阴郁大boy2 小时前
一个基于纯前端技术实现的五子棋游戏,无需后端服务,直接在浏览器中运行。
前端·游戏
八个程序员2 小时前
c++计算器(简陋版)
c++·游戏
mjhcsp3 小时前
C++小游戏NO.1游戏机
c++·游戏
yangshuo12813 小时前
AI编程工具对决:Kilo vs Augment 开发Flutter俄罗斯方块游戏实战对比
flutter·游戏·ai编程
上海迪士尼354 小时前
力扣子集问题C++代码
c++·算法·leetcode
莫听穿林打叶声儿4 小时前
Qt中使用QString显示平方符号(如²)
c++·qt