Unreal Engine 5:第三人称运动系统和人物动画

之前的博客说的是第一人称视角下的东西,今天要来做第三人称视角下的运动系统和任务动画

第三人称人物运动系统

第三人称视角实现

首先我们打开我们的BP_character,打开后看到"视口"界面

在右边"细节"找到网路体->点击"网路骨骼体资产"->选择"SKM_Manny_Simple"

我们看到胶囊体中有一个蓝色的箭头,那个代表是角色的正前方

接下来我们把"位置"和"旋转"的Z轴调成-90°

调整之后的样子

先运行一次

看着视角很奇怪,接下来开始设置第三人称视角

接下来在"组件"那一栏添加"弹簧臂组件"和"摄像机组件"

添加后需要将摄像机调整到合适的位置,调整后的样子

先运行一次

我们看到了视角已经变成了第三人称,这里补充下弹簧臂是做什么的

首先我们将角色移动到角落

接下来将摄像机转向另一边

我们可以看到视角会进行缩放,如果没有弹簧臂则会穿模

现在看到角色运动的模式和市面上的第三人称的游戏相差甚远,这里需要改两个设置

首先我们来到蓝图,找到"弹簧臂"并点击,在"细节"中找到"摄像机设置",并勾选"使用Pwan"控制旋转,那么Pawn是什么呢?

Pwan就是由鼠标来操控视角

把"Pwan"进行勾选时,我们看到摄像机不会跟着转

可是把"Pwan"取消勾选的时候,摄像机就会跟着动

接下来点击BP_character(自我)->找到"使用控制器"(也可以直接搜"使用控制器")->把"使用控制器旋转Yaw"取消勾选

可以自行运行下

第三人称运动系统实现

运行后发现无论鼠标怎么转角色永远保持在同一个方向,并不会随着鼠标改变朝向,举个例子:正常来说,如果将鼠标朝向后边按下"W"的时候角色应该转身往另一个方向走,可是目前并不会转向,那么该怎么办呢?

先打开蓝图并看到之前角色移动这里

可以看到"获取"Actor的向前向量,也就是视口中的蓝色箭头,不过在第三人称这里是不对的,应该改为摄像机的朝向

这里将"camera"拖出来

搜索"获取世界旋转"并分割结构体引脚

接下来搜索"获取向前向量"并分割结构体引脚

接下来将Z轴连起来

接下来把之前的"获取Actor向前向量"删除并将其接上

再来要把"camera"和"获取世界旋转"复制下

这次我们要搜索的是"获取向右向量"

然后重复上述步骤

可自行测试

还能看到角色按照摄像机的方向走了,可是角色本身还是不会随着转动,这里只要再改一个设置就行

点击"BP_character"->找到"角色移动(旋转设置)",也可以直接搜索"角色移动"->勾选"将旋转朝向运动"

这样就完成了,可自行测试

第三人称人物动画

先打开"内容侧滑菜单"->创建新资料夹,名字叫"Animation"

打开资料夹后创建"动画蓝图"->选择"SK_Mannequin"->命名为"ABP_Main"

在创建一个"混合空间"->选择"SK_Mannequin"->命名为"BS_walk"

先打开"BS_walk",界面是这样的

接下来进行动画制作

奔跑动画制作

首先找到"水平坐标",把"最大轴值"改成600(最大为600)、"网格划分"改成2格、把"与网格对齐"进行勾选

垂直坐标的"与网格对齐也要勾选"

我们在"资产浏览器"搜索:jog_fwd,选择MF_Unarmed_Jog_Fwd

将他拖到"动画曲线编辑器"的末尾

再搜索:MM_idle

将其拖到开头

之后可以住Ctrl,可以进行动画浏览

动画蓝图制作

打开动画蓝图的时会看到这个

首先要创建"BS_walk"

再看到"事件图表"->搜索"获取移动组件"->把它和"尝试获取Pwan拥有者"进行链接

接下来拖曳"Return Value"->搜索"velo"关键字->选择"获取velocity"

接下来搜索"获取向量XY"并将它和"velocity"链接

之后拖曳"return value"->选择"提升为变量"

将其命名为"Speed"

最后将set和"事件蓝图更新动画"链接

蓝图:

最后将speed从"变量"拖曳出来和"BS_walk"进行链接

之后回到BP_Character,找到"动画"->动画模式选择"使用动画蓝图"->动画类"选择ABP_Main_C"

之后就OK了,可以自行测试

补充

如果觉得停顿不自然的话,找到"BS_walk",找到"平滑时间"改成0.2秒,找到"平滑类型"选择"立方"

相关推荐
zhangrelay4 小时前
mrpt杂乱笔记-26-10-31
笔记·学习
Ramble_Naylor5 小时前
Rust深度解读:异步流(Async Streams)与生成器的处理艺术
开发语言·后端·rust
努力实干5 小时前
简单工厂模式(Simple Factory Pattern)——C++
开发语言·c++·简单工厂模式
熊猫钓鱼>_>5 小时前
平行视界兼容模式与魔法变量配置避坑【鸿蒙心迹】
运维·服务器·开发语言·笔记·华为·harmonyos·openharmony
大鹏说大话5 小时前
PHP 大文件上传解决方案:分片上传完整思路
开发语言·php
衡石科技5 小时前
让多轮问数保持口径一致:Data Agent 的上下文、偏好与学习开关
人工智能·学习·安全
Wang's Blog6 小时前
Java 项目实战:交友项目 - 我的访客:需求说明
java·开发语言·交友
東隅已逝,桑榆非晚6 小时前
算法2. 双指针法-复写零
c++·笔记·学习·算法
布莱克6056 小时前
C++ 中堆和栈的区别详解
开发语言·c++·栈·堆