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

news2024/11/26 2:43:28

接上一篇 Unreal5 第三人称射击游戏 角色基础制作1
在这里插入图片描述

角色蹲伏效果

上面是需要的操作映射,蹲伏实现,首先要开启相应功能,你需要在角色移动组件上面开启可蹲伏
在这里插入图片描述
蹲伏还有一些其它设置,比如蹲下角色高度,蹲下以后行走的速度
在这里插入图片描述
在这里插入图片描述

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

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

时间轴创建

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

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

实现相机偏移

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

瞄准偏移功能

瞄准偏移是角色的头部会跟随着相机的朝向而修改朝向,让它们都朝向同一个方向。这个功能实现我们会用到附加动画。
在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础2

一.常见数据类型 数值类型: TINYINT:占用1字节,默认为有符号 BIT(M):位类型:M指定位数,默认值为1,范围为1-64,bit类型在显示时,按照ASCII码对应的值进行显示。 FLOAT[(M,…

华为OD机试(41-60)老题库解析Java源码系列连载ing

华为OD机试算法题新老题库练习及源码 41.寻找相同子串42.找出经过特定点的路径长度43.全量和已占用字符集44.密钥格式化45.数字字符串组合倒序 郑重声明: 1.博客中涉及题目为网上搜索而来,若侵权,请联系作者删除。 源码内容为个人原创&#…

git --- git merge用法

1 git merge介绍 在Git中,合并是一个连接分叉历史的过程。它将两个或多个开发历史连接在一起。git merge命令可以帮助你把git分支创建的数据整合到一个分支中。git merge会将一系列的提交关联到一个统一的历史。 在上图中,有两个分支 master 和 feature。我们可以看到,我们…

《priority_queue》

本文主要介绍优先级队列的使用,以及一个TOPK问题的OJ 文章目录 一、priority_queue的介绍二、priority_queue的使用三、[数组中第k个大的元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) 一、priority_queue的介绍 优先队列是一种容器适配器…

代码创造童话--Python为六一儿童节送专属礼物

前言: Hello大家好,我是Dream。 六一儿童节到啦,祝所有的朋友们六一儿童节快乐! 在这个节日里,孩子们可以接受父母、老师、社会各界人士的关爱和祝福,同时也可以享受到各种各样的礼物和活动。Python作为一门…

第十五篇、基于Arduino uno,获取mpu6050三轴加速度、角速度、温度的数据——结果导向

0、结果 说明:先来看看串口调试助手显示的结果,第一个值是温度值,第二个值是X轴的加速度,第三个值是Y轴的加速度,第四个值是Z轴的加速度,第五个值是X轴的角速度,第六个值是Y轴的角速度&#xff…

C++库函数——string类

1. 简介 ①什么是string类 源文档 译: 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。 3. string 类是使用 char( 即作为它…

【六一】90后的你们还记得年少时的梦吗?还记得你们当初追的奥特曼吗?现在就让我们一起回味我们逝去的曾经吧!

迎面走来的是我们从未正式出过剧集,并附有“反派”盛名的大哥!佐~~菲~~! 还记得第一个登场,第一个进入我们的视野的那位吗?没错,那就是奥特曼 我的最爱~~~~~赛文! 一度以为,曾经的那…

Bellhop 绘制传播损失

文章目录 前言一、相干传播损失(TL)基本算例1、环境文件2、绘制相干传播损失 二、相干、半相干和非相干传播损失(TL) 前言 上文我们讲述了 Bellhop 的使用以及使用 bellhop 绘制了声速剖面、声线轨迹及本证声线,本文我…

【SpringMVC】入门案例

前言: SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。 对于SpringMVC我们主要学习如下内容: SpringMVC简介请求与响应REST风格SSM整合(注解版)拦截器 SpringMVC是处于Web层的框架,所以其主要的作用…

用户验证FTP实验

用户FTP实验 目录 匿名用户验证: 本地用户验证: 本地用户访问控制: 匿名用户验证: 例:(前提配置,防火墙关闭,yum安装,同模式vmware11) 现有一台计算机huy…

数据结构算法-图技术点(图的算法实现)

先看 定义邻接表 //边 struct Edge {int AdjVertex;//邻接顶点int Weight;//权值Edge* next;//下一条边 };using VertexValue use define//顶点 struct Vertex {VertexValue value; // 顶点数据Edge* First;//获取第一条边 }; //邻接顶点 using AdjVertex Vertex*; //邻接…

自动驾驶嵌入式开发工程师:车载SOC开发修炼秘籍

声明:本文档是博主在开发学习过程中写的笔记,本意是便于以后开发复盘,参考《 ug1144-petalinux-tools-reference-guide》、《ug1085》、黑金Zynq UltraScale MPSoC 5EV开发板资料、英伟达官方资料。大佬勿喷 大佬勿喷 大佬勿喷!&a…

【资料分享】RS-485 串行接口说明

面对大量可用的串行接口,可能很难理解它们之间的差异以及何时使用它们。正如我最喜欢的工程学教授经常说的那样,“标准的美妙之处在于有很多标准可供选择。” 今天的编码器比以往任何时候都更智能、更先进,要求工程师放弃更简单的正交增量传感…

智能网联环境下数据安全分析与建设思考

01安全概况 随着智能化程度不断提升,汽车正逐渐从传统意义上的交通工具演化为公路上的智能终端,核心部件也从发动机、变速箱、底盘上升为芯片、软件与数据。相关机构研究表明,目前全球市场搭载智能网联功能的新车渗透率约为45%,预…

160个CrackMe之001

吾爱中的逆向练习题 运行程序 有两个方式 一个是账号登入 一个是序列号输入 账号输入 方法一 爆破 我们先进行账号输入 这个是最简单的逆向 所以我们可以使用 字符串查找看看 先试用ollydbg打开 右键 ->查找 ->所有参考文本字符串 这里我们能发现有两个报错 我们还…

《C++ deque的介绍以及stackh和queue的模拟实现》

文章目录 一、容器适配器1.1 什么是适配器1.2 STL中stack和queue的底层结构1.3 deque的简单介绍1.3.1 deque的原理介绍1.3.2 deque的结构1.3.3 deque和vector以及list的对比1.3.4 为什么选择deque作为stack和queue的适配容器 二、stack的模拟实现三、queue的模拟实现 一、容器适…

5个超实用视频素材网站,免费下载~

推荐几个高清无水印的视频素材网站,重点是可以免费下载使用,建议收藏! 菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 可以称之为最大素材库,在这里你可以找到设计、办公、图片、视频、音频等各种素材。视频素材就有…

基于Nginx搭建LNMP

目录 一:安装 Nginx 服务 1、关闭防火墙、安装依赖包 2、创建运行用户 3、压缩包编译安装 4、优化路径 5、添加 Nginx 系统服务 二: 安装 MySQL 服务 1、安装Mysql环境依赖包 2、创建运行用户 3、编译安装 4、修改mysql 配置文件 5、更改mysql安装…

网络通信:http协议

虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议) 就是其中之一. 认识URL 统一资源定位符(Uniform Resource Locator,缩写:URL),…