首页 > 其他分享 >Unreal5 第三人称射击游戏 角色基础制作2

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

时间:2023-06-03 12:05:45浏览次数:41  
标签:动画 第三人称 朝向 角色 Unreal5 相机 偏移 射击 蹲伏


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

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

角色蹲伏效果

上面是需要的操作映射,蹲伏实现,首先要开启相应功能,你需要在角色移动组件上面开启可蹲伏

Unreal5 第三人称射击游戏 角色基础制作2_时间轴_02


蹲伏还有一些其它设置,比如蹲下角色高度,蹲下以后行走的速度

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


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

中英文截图

这里我设置的移动速度,蹲伏时可以走出平台,就为了防止在物体上面出现无法跳下去的问题。

接下来我们要实现蹲伏逻辑

Unreal5 第三人称射击游戏 角色基础制作2_序列帧_05


获取事件输入,然后判断当前是否处于蹲伏,这个是在角色移动插件里面获得,然后设置相反的动作,实现点击切换蹲伏的状态,然后将状态设置给角色类上面。

接下来制作蹲伏混合空间1D

Unreal5 第三人称射击游戏 角色基础制作2_时间轴_06

混合空间制作完成后,基础部分已经实现,接下来我们将实现动画混合,打开动画蓝图

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


进入之前实现的站立的基础状态里面,在这里实现对动作的混合

Unreal5 第三人称射击游戏 角色基础制作2_序列帧_08


接下来把制作的混合空间拖入,然后使用节点,按buer混合姿势,我们可以通过一个布尔变量,来切换站立姿势或者蹲伏姿势。

按照布尔变量切换使用蹲伏的动作还是正常的动作,我们需要一个布尔值,所以创建一个布尔变量

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


让混合姿势节点通过这个值进行切换

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,相机,偏移,射击,蹲伏
From: https://blog.51cto.com/u_15948039/6407667

相关文章

  • mac太空射击游戏:Nova Drift (新星漂移)中文版
    NovaDrift是一款激动人心的太空射击游戏。NovaDriftMac整合了现代独立游戏风格和游戏历史上最深的根源。它不仅具有时尚和性感的外观,而且具有平稳的控制功能。玩家控制着一艘不断开发的生物机械船,面对敌人的大量奇怪而致命的疲劳,将垂死的星星驱逐出空隙。NovaDriftMac游戏介......
  • 使用python完成一个射击类游戏“小黄人保卫战”
    1.项目开发环境下载Python且保证能够正常工作,为了能用Python来写一个游戏,需要安装PyGame。PyGame是一个Python的库,能够让我们容易的写出一个游戏。它提供的功能包括图片处理和声音重放的功能,并且它们能很容易的整合进你的游戏里。2.项目功能介绍通过设计一款塔防游戏“小黄......
  • PAT Basic 1082. 射击比赛
    PATBasic1082.射击比赛1.题目描述:本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。2.输入格式:输入在第一行中给出一个正整数N(≤10......
  • 自己早期做的一个基于j2me的飞行射击类游戏
    早期的代码,MVC思想大小:52.3KB大小:47.6KB1945.rar(431.3KB)下载次数:19Game6.rar(192.9KB)下载次数:16MapTest.rar(187.9KB)下载次数:15查看图片附件......
  • 使用unity构建射击小游戏
    使用unity构建射击小游戏成果图参考例程www.manning.com/hocking问题汇总1、renderer.material方法过时换成使用this.GetComponent()参考网址:https......
  • 耗资百万的TPS第三人称射击『赛博朋克』游戏,免费开源啦!下载攻略奉上
    Cocos引擎最近开源了《赛博朋克》游戏源码,这是一个TPS第三人称视射击游戏。项目包含13W行源代码,50W外包美术资源,并且它演示了CocosCreator引擎最新的渲染能力。喜欢3D......
  • 耗资百万的TPS第三人称射击『赛博朋克』游戏,免费开源啦!下载攻略奉上
    Cocos引擎最近开源了《赛博朋克》游戏源码,这是一个TPS第三人称视射击游戏。项目包含13W行源代码,50W外包美术资源,并且它演示了CocosCreator引擎最新的渲染能力。喜欢3D......
  • 噩梦系列篇之Player之激光制作及射击完成
    下面完成player的射击功能。该功能设定为自动开枪,也就是用计时器来开枪。。。。首先给player加入一个脚本Gunshoot如图:然后要给player在射击的时候加入光效,很简单,在枪口的位......
  • 利用Python制作第一人称射击小游戏 含源代码
    大家好我是毕加锁(锁!)今天教大家利用Python制作第一人称小游戏 涉及知识点1.sprites2.pygame混音器3.图章  4.python基础语法.代码1发射声fromspritesimport*......
  • 《基于赛朋风格的 VR 射击游戏的设计与开发》读后随笔
    VR技术利用计算机将现实生活中数据模拟的一种环境,使用户沉浸到环境中,能感受到人类在真实事境中的听觉、嗅觉、触觉和味觉等一切感知功能,具有超强的仿真系统,真正地......