Unreal5 第三人称射击游戏 角色基础制作2

接上一篇 Unreal5 第三人称射击游戏 角色基础制作1
Unreal5 第三人称射击游戏 角色基础制作2_第1张图片

角色蹲伏效果

上面是需要的操作映射,蹲伏实现,首先要开启相应功能,你需要在角色移动组件上面开启可蹲伏
Unreal5 第三人称射击游戏 角色基础制作2_第2张图片
蹲伏还有一些其它设置,比如蹲下角色高度,蹲下以后行走的速度
Unreal5 第三人称射击游戏 角色基础制作2_第3张图片
Unreal5 第三人称射击游戏 角色基础制作2_第4张图片

中英文截图
这里我设置的移动速度,蹲伏时可以走出平台,就为了防止在物体上面出现无法跳下去的问题。
接下来我们要实现蹲伏逻辑
Unreal5 第三人称射击游戏 角色基础制作2_第5张图片
获取事件输入,然后判断当前是否处于蹲伏,这个是在角色移动插件里面获得,然后设置相反的动作,实现点击切换蹲伏的状态,然后将状态设置给角色类上面。
接下来制作蹲伏混合空间1D
Unreal5 第三人称射击游戏 角色基础制作2_第6张图片

混合空间制作完成后,基础部分已经实现,接下来我们将实现动画混合,打开动画蓝图
Unreal5 第三人称射击游戏 角色基础制作2_第7张图片
进入之前实现的站立的基础状态里面,在这里实现对动作的混合
Unreal5 第三人称射击游戏 角色基础制作2_第8张图片
接下来把制作的混合空间拖入,然后使用节点,按buer混合姿势,我们可以通过一个布尔变量,来切换站立姿势或者蹲伏姿势。
按照布尔变量切换使用蹲伏的动作还是正常的动作,我们需要一个布尔值,所以创建一个布尔变量
Unreal5 第三人称射击游戏 角色基础制作2_第9张图片
让混合姿势节点通过这个值进行切换
Unreal5 第三人称射击游戏 角色基础制作2_第10张图片
结果就这样了,接下来,我们只需要在角色蓝图内,去修改这个值即可,接下来在之前设置的是否蹲伏那里,然后获取动画蓝图节点,蹲伏状态下设置变量为true,解除蹲伏则设置回false
Unreal5 第三人称射击游戏 角色基础制作2_第11张图片
我看了一下,如果你在蹲伏状态下,然后点击解除蹲伏,会出现动画恢复了,其实没有接触蹲伏状态,我直接用回调解决这个问题来处理动画
Unreal5 第三人称射击游戏 角色基础制作2_第12张图片
我们发现这是蹲伏以后,相机焦点还是原来的位置,但是角色已经蹲下了,所以,我们需要使用时间轴实现角色蹲下了以后,相机也会跟着向下靠拢。

时间轴创建

接下来要制作切换动画,首先创建一个时间轴
Unreal5 第三人称射击游戏 角色基础制作2_第13张图片
在时间轴里面创建一个浮点型轨道
Unreal5 第三人称射击游戏 角色基础制作2_第14张图片
命好名称,然后我们要制作0.3s的过渡,所以创建了两个点,一个是时间是0,值也是0
Unreal5 第三人称射击游戏 角色基础制作2_第15张图片
另一个是时间0.3 值为1
Unreal5 第三人称射击游戏 角色基础制作2_第16张图片
左上两个按钮是可以显示整个时间轴,而不需要我们自己拖拽显示全部。
最后记得将长度修改为设置的时间轴的总长度,要不然虽然你的数值变换完成了,但是你的动画会有很大空闲。
Unreal5 第三人称射击游戏 角色基础制作2_第17张图片
右键选择第一个关键字,选择自动,将会自动插值
Unreal5 第三人称射击游戏 角色基础制作2_第18张图片
Unreal5 第三人称射击游戏 角色基础制作2_第19张图片
Play 直接播放,如果你当前播放了一段,会直接在播放的点继续播放
Play from Start 直接从初始位置播放
Stop 暂停序列帧更新
Reverse 反向播放
Reverse from End 从结束位置反向播放
Set New Time 可以设置一个新的位置 New TIme 就是一个你自己定义的时间位置

Update 序列帧更新时会每一帧都触发
Finished 序列帧结束时触发
Direction 获取是正向播放还是反向播放 可以switch判断
Half Height 我个人定义的名称,可以获取到当前的序列帧的值

实现相机偏移

我们要实现的是对插槽偏移的z轴进行修改
Unreal5 第三人称射击游戏 角色基础制作2_第20张图片
那么把弹簧臂组件从左侧拖入蓝图中,首先获取插槽偏移的值输入Socket Offset是插槽偏移的英文。
Unreal5 第三人称射击游戏 角色基础制作2_第21张图片
先获取然后再设置,因为我们只需要设置z轴,其它两个轴直接直连,保持原来的值
Unreal5 第三人称射击游戏 角色基础制作2_第22张图片
接下来,我们使用插值节点,来去实现值的生成,Alpha为0时,值就是A Alpha为1时,就是用的b,中间就是两个值插值出来的,
具体算法就是(b - a) * Alpha + a
Unreal5 第三人称射击游戏 角色基础制作2_第23张图片
这样就实现了整个蹲伏的逻辑
Unreal5 第三人称射击游戏 角色基础制作2_第24张图片
做到这里,我将版本更新到了5.1,使用上了ue5.1的增强输入功能,unreal 5.1 增强输入实现请按需修改。

瞄准偏移功能

瞄准偏移是角色的头部会跟随着相机的朝向而修改朝向,让它们都朝向同一个方向。这个功能实现我们会用到附加动画。
Unreal5 第三人称射击游戏 角色基础制作2_第25张图片

使用附加动画实现,我们要将所有动画基于正向朝向进行偏移,这里我使用的一组是红框框出来的
Unreal5 第三人称射击游戏 角色基础制作2_第26张图片
如果大家没有动画,可以去商店找免费动画包。
接下来实现基于正向朝向的偏移实现,如何批量设置,我们需要全选资源,然后再资产操作里面找到通过属性矩阵进行批量编辑
Unreal5 第三人称射击游戏 角色基础制作2_第27张图片
接下来在窗口中全选资产,在右侧additiveSettings里面设置基础姿势动画为正面朝向的动画,实现了动画基于正向动画的偏移
Unreal5 第三人称射击游戏 角色基础制作2_第28张图片
如果你想单个的设置,可以在动画页面找到附加设置
Unreal5 第三人称射击游戏 角色基础制作2_第29张图片

接着创建一个瞄准偏移资产,用于制作偏移动画,瞄准偏移英文为Aim Offset,我们可以给资产增加前缀AO
Unreal5 第三人称射击游戏 角色基础制作2_第30张图片
选择好相应的骨骼,进入,会发现,它和混合空间1D最大的区别就在于,它有两个坐标轴的,
Unreal5 第三人称射击游戏 角色基础制作2_第31张图片
接着给两个坐标轴命名,这里水平取名Yaw,垂直坐标取名Pitch,这个名字取自欧拉角,不知道朋友学一下。水平和垂直范围都是-90到90度,也就是头部可以旋转的范围是180度。
Unreal5 第三人称射击游戏 角色基础制作2_第32张图片
设置完成后,会发现场景里面的角色消失了,附加动画,简而言之就是需要附加到其它动画上面才有用,所以我们需要修改它的预览基础动画,选一个idle动画看看效果。
Unreal5 第三人称射击游戏 角色基础制作2_第33张图片
到这里,附加动画就算做完了,接下来,我们需要做的就是在动画蓝图里面实现相应的功能,实现思路是通过获取到角色的朝向和相机的朝向,根据得到的夹角,进行对附加动画的偏移设置。
首先求出来两个夹角,然后限制一下范围
Unreal5 第三人称射击游戏 角色基础制作2_第34张图片
为了解决头部出现瞬移的情况,我们使用插值补间动画过渡,R插值到 这个节点
Unreal5 第三人称射击游戏 角色基础制作2_第35张图片
我们可以定义当前 current 以及目标 target,然后设置时间 DeltaTime为间隔时间,是每帧的间隔时间, Interp Speed 为过渡的速度,0为无过渡,值越大越平滑。
Unreal5 第三人称射击游戏 角色基础制作2_第36张图片
上图创建了两个变量 Pitch 和Yaw 用于存储当前偏移量,也是作为设置附加动画的值,最后,我们还需要吧插值的结果赋值给这两个变量,这两个变量就实现了针对于相机和角色的偏移,而跟随偏移。
Unreal5 第三人称射击游戏 角色基础制作2_第37张图片
上面我们在动画蓝图的事件图表中,实现了瞄准偏移节点的值的获取。
最后,我们需要将制作的瞄准偏移动画加入到基础动画流程中,实现动画的混合,赋值即可
Unreal5 第三人称射击游戏 角色基础制作2_第38张图片
还有一个问题,前面我做的瞄准偏移节点竟然做成了混合空间节点,结果就出问题了,大家也要注意。
这样制作完成以后,会发现,相机移动到角色正面时,角色始终不会看向相机,接下来,我们实现一下相机移动到正面,角色的脸朝向前方。
经过查看发现,相机在角色正前方的两个Z值夹角差值为-90到-180度 和 90到180度,那么我们直接取它的绝对值,用于判断相机是否在正前方
Unreal5 第三人称射击游戏 角色基础制作2_第39张图片
获得了布尔变量,我们可以通过分支进行判断,如果不大于100,则还是按照之前默认处理,如果相机在正前方,那么要让脸朝向前方,这个实现的思路就是,让当前的Yaw值也插值到0(0就是Yaw左右方向默认朝向前方的值)。如果需要Pitch值,也可以这么处理。
Unreal5 第三人称射击游戏 角色基础制作2_第40张图片
但是,在韩国游戏里面,他们的处理方式,相机在前方时,角色脸会朝向相机,我接下来实现一下。
首先,进行一个布尔判断,就是相机和朝向差值到了多少以后,切换为脸部朝向相机。我们只需要判断插值的Yaw即可
Unreal5 第三人称射击游戏 角色基础制作2_第41张图片
在正面时,我们要求出相机屁股的朝向,我通过打印发现,相机转向的范围为 Yaw 是0到360度,Pitch 是 0到90 和270到360。Yaw的反向值可以通过加180求出,Pitch可以取负值或者用360减去当前值。
Unreal5 第三人称射击游戏 角色基础制作2_第42张图片
最后,我们使用这个反向旋转体和角色旋转体求差值,继续之前的步骤即可,下面是当前功能的全部代码。
Unreal5 第三人称射击游戏 角色基础制作2_第43张图片

整理

最后,整理一下节点,选中所有射击偏移相关的函数,折叠到函数
Unreal5 第三人称射击游戏 角色基础制作2_第44张图片
可以直接将这一堆节点生成一个函数,进入函数,会发现这两个值其实都是引用的一个值,却给了两个参数,我们要合并到一起。按住ctrl键,将Self 3的节点拖拽到Self 2,
Unreal5 第三人称射击游戏 角色基础制作2_第45张图片
然后选中节点在右侧改名,
Unreal5 第三人称射击游戏 角色基础制作2_第46张图片
点击编译,编译以后外部调用的地方会发生报错,这里我们需要刷新节点来解决报错
Unreal5 第三人称射击游戏 角色基础制作2_第47张图片
问题解决,基础的动作和移动功能已完成,后面将更新角色的射击功能。

脚步声的制作

脚步声的制作其实很简单如果不区分地面材质的话,直接在移动动画上面播放音效即可。
但我们要做的就复杂一些,要根据不同的地面材质播放不同的音效,在草地上面播放脚踩草地的声音,在水泥地上面播放脚踩水泥地的声音。
大概思路是,在动画中脚落地的地方触发通知,通知去触发角色的事件,事件里面在脚底板下面发射射线检测地板材质,然后根据相应的材质去播放音效。
那么先来第一步,创建通知以及事件,先在角色蓝图中创建两个事件,用于逻辑处理
Unreal5 第三人称射击游戏 角色基础制作2_第48张图片
然后创建两个通知,触发对应的两个事件,两个通知的不同地方就是左右脚事件
Unreal5 第三人称射击游戏 角色基础制作2_第49张图片
通知创建完成以后,记得在每个移动的动画里面动画落脚的地方添加上动画通知
Unreal5 第三人称射击游戏 角色基础制作2_第50张图片
设置完成以后,我们需要实现射线拾取功能,首先在角色身上创建两个箭头组件,它两个只作为点的拾取用,一个插槽旋转左脚,一个选择右脚,到时候我们使用它们两个场景坐标作为拾取地面材质的位置。
Unreal5 第三人称射击游戏 角色基础制作2_第51张图片
创建一个播放脚步声的函数,在函数内,创建一个布尔变量传入,来设置是左脚还是右脚
Unreal5 第三人称射击游戏 角色基础制作2_第52张图片
事件调用,一个打钩,一个不打钩即可
Unreal5 第三人称射击游戏 角色基础制作2_第53张图片
接下来是通过射线去拾取地面,
Unreal5 第三人称射击游戏 角色基础制作2_第54张图片
红框地方是获取到箭头组件的世界位置,然后位置向下获取z轴小于10(也就是10厘米),这样可以获取一根垂直向下的射线,去拾取命中的对象。
Unreal5 第三人称射击游戏 角色基础制作2_第55张图片
先判断是否拾取到了对象,然后获取表面类型
Unreal5 第三人称射击游戏 角色基础制作2_第56张图片
最后根据表面类型,调用不同的声音
Unreal5 第三人称射击游戏 角色基础制作2_第57张图片

你可能感兴趣的:(unreal,游戏,动画)