【UE5.1 角色练习】16-枪械射击——瞄准

目录

效果

步骤

一、瞄准时拉近摄像机位置

二、瞄准偏移

三、向指定方向射击

四、连发


效果

步骤

一、瞄准时拉近摄像机位置

打开角色蓝图,在事件图表中添加如下节点,当进入射击状态时设置目标臂长度为300,从而拉近视角。

但是这样切换视角距离有些生硬,我们可以通过时间轴节点来做个过渡

两个时间曲线均从(0,0)到(0.2,1)

此时效果如下,可以看到在切换射击状态时,视角会逐渐拉近或拉远

二、瞄准偏移

为了解决角色只能朝左右射击无法上下射击的问题,我们需要在鼠标上下移动视角的时候将枪口也进行上下移动。

1. 在“AnimStarterPack”资源包中找到一个名为“Aim_Space_Hip”动画序列

可以看到该动画序列是角色上下左右端枪的姿势

2. 通过IK重定向器将该动画序列重定向给我们的角色

此时我们就拥有了适配角色骨骼的动画序列

下面我们需要对这个动画进行拆解,分别拆解成角色向上、下、左、右瞄准的动画。

复制3份动画序列“Aim_Space_Hip”,这里分别命名为“Aim_Space_Hip_Center”、“Aim_Space_Hip_CenterDown”、“Aim_Space_Hip_CenterUp”,分别表示角色向正前方、正下方和正上方端枪的动画序列。

3. 打开动画序列“Aim_Space_Hip_Center”。将时间轴指针移动到第4帧,然后移除第5帧之后的所有帧(包括第5帧)

可以看到此时该动画序列就只有4帧

同样的方法,我们可以像这样制作角色向正下方、正上方端枪的动画序列。但是这里我们再使用另一种方法来创建角色向正下方、正上方端枪的动画序列。

4. 再次打开动画序列“Aim_Space_Hip”,将指针移至第10帧,可以看到此时角色向正上方端枪,然后点击“创建资产-》创建动画-》当前姿势”

可以看到创建的动画就只有一帧,就是角色向正上方端枪的动画

同样的方法,在“Aim_Space_Hip”中的第20帧找到角色向正下方端枪的动画,然后创建动画序列“Aim_Space_Hip_CenterDown”

同样的方法再创建角色向左中、左上、左下、右中、右上、右下端枪的动画序列

5. 选中这9个动画序列,然后鼠标右键点击“通过属性矩阵进行批量编辑”

选中这9个动画序列,然后将“Additive动画类型”设置为“网格体空间”

6. 打开角色的动画蓝图

创建一个瞄准偏移混合空间

这里命名为“AimOffset2D_Rifle”

打开“AimOffset2D_Rifle”,水平、垂直坐标的名称和范围

将9个动画序列放置在相应的位置上

像混合空间一样,此时我们修改预览点的坐标位置,就可以看到角色不同的端枪姿势

 7. 再次选中这9个动画序列,然后鼠标右键点击“通过属性矩阵进行批量编辑”

“基础姿势”为“选择的动画帧”

“基础姿势动画”设置为角色端枪待机的动画“Idle_Rifle_Hip”

8. 再次回到瞄准偏移“AimOffset2D_Rifle”中会发现预览姿势不太对劲

因此我们需要将“预览基础姿势”设置为角色端枪待机的动画序列“Idle_Rifle_Hip”,此时预览姿势就正常了。

9. 在动画蓝图的动画图表中,双击进入状态“IdleRifle”

将瞄准偏移作为该状态的输出姿势

可以看到瞄准偏移还需两个输入值,因此我们在动画蓝图中创建两个浮点类型变量,分别命名为“Yaw”和“Pitch”

然后将这两个变量值输入到瞄准偏移中

为了验证是否有效,我们可以修改Pitch的默认值为30

此时运动游戏,可以看到角色在进入射击状态后,枪口向上偏移了一些

双击进入状态“RunRifle”

添加如下节点

此时我们在动画预览编辑器中修改“Yaw”和“Pitch”的值可以看到角色向着指定的方向端枪

若增加角色移动速度也可以看到同样的效果

三、向指定方向射击

打开角色蓝图在事件图表中添加如下节点,用鼠标指向远方的方向减去角色自身的方向就可以得出动画蓝图中变量“Yaw”和“Pitch”的值

然后我们需要在进入射击状态时显示鼠标,因此删除如下节点

此时运行可以看到角色端枪的方向会随着鼠标的移动而移动

我们将鼠标瞄准的场景位置提升为一个变量,用于表示射击目标的位置

之前我们子弹发射的方向只是角色向前的方向

现在我们可以通过变量“AimTarget”来设置子弹发射的方向

此时我们就实现了鼠标指哪打哪的效果(并不是精确射击)

四、连发

当我们按下鼠标左键准备发射子弹前添加一个时间轴

设置时间轴为循环

这样当我们按下鼠标左键后,就会一直发射子弹了。如果感觉子弹发射的频率太高,我们可以添加一个延迟

此时我们按住鼠标组件不动就可以连发了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 通知访问权限

问题背景 客户反馈手机扫描三方运动手表,下载app安装后,通知访问权限打不开。 点击提示“受限设置” “出于安全考虑,此设置目前不可用”。 问题分析 1、setting界面搜“授予通知访问权限”,此按钮灰色不可点击,点…

C++基础篇(1)

目录 前言 1.第一个C程序 2.命名空间 2.1概念理解 2.2namespace 的价值 2.3 namespace的定义 3.命名空间的使用 4.C的输入输出 结束语 前言 本节我们将正式进入C基础的学习,话不多说,直接上货!!! 1.第一个C程…

JAVA分布式事务详情分布式事务的解决方案Java中的分布式事务实现

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

关于Python中的字典你所不知道的七个技巧

01 引言 Python是我最喜欢的编程语言之一,它向来以其简单性、多功能性和可读性而闻名。 字典作为Python中最常使用的数据类型,大家几乎每个人都或多或少在项目中使用过字典,但是字典里有一些潜在的技巧可能并不是每个同学都会用到。 在本文…

院内导航:如何用科技破解就医找路难题

自2019年开始“院内导航”被纳入医院智慧服务评估体系以来,到2023年改善就医服务升级的部署,每一步都见证了我国医疗卫生体系向智能化、人性化迈进的坚实步伐。 面对庞大复杂的医院环境与日益增长的就诊需求,如何让患者在茫茫人海中迅速找到就…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

干货:XXX智慧城市大数据共享交换平台建设方案(145页word)

引言:智慧城市大数据共享交换平台建设方案旨在构建一个高效、安全、可扩展的数据共享与交换生态系统,以促进城市内不同部门、机构及企业间的数据互联互通,推动数据资源的深度整合与利用,加速智慧城市建设进程。 方案介绍&#xff…

TongRDS 2214 docker版指引(by lqw )

文章目录 前言准备工作中心节点服务节点哨兵节点 前言 部署docker版本,建议先参考TongRDS2214手动部署版指引(by lqwsy) 在本地手动部署了一套适合业务场景的rds 服务后,再通过dockerfile 打镜像。 准备工作 1.准备对应的安装包…

开始性能测试之前的准备工作!

性能测试是软件测试中不可或缺的一部分,它可以帮助我们评估软件系统的性能表现,并找出潜在的性能瓶颈。在进行性能测试之前,需要做好充分的准备工作,以确保测试的有效性和准确性。 1. 确定性能测试的目标和范围 * 明确测试目标:性…

网口变压器下方是否要挖空探讨

一. 引言 1. RJ45组成 RJ45模块用于PHY芯片之间的互连,如图1所示,RJ45有两种组合形式,一种是分立式,网络变压器和RJ45连接座是分开的,另一种是网络变压器和RJ45集成在一起。RJ45连接座又分为带屏蔽与不带屏蔽两种。 …

C++基础编程100题-021 OpenJudge-1.4-01 判断数正负

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/01/ 描述 给定一个整数N&#xff0c;判断其正负。 输入 一个整数N(-109 < N < 109) 输出 如果N > 0, 输出positive; 如果N 0, 输出zero; 如果N < 0, 输出negative 样例输入 1样例输出…

MySQL空间索引

空间类型是建立在空间类型字段上的。 空间类型 MySQL的空间类型很多&#xff0c;我就不逐一介绍了。重要分四大类&#xff1a; GeometryCurveSurfaceGeometryCollection 前三种&#xff0c;地理、曲线、曲面都是不可实例化的。Geometry有一个子类Point, Curve有一个直接子类L…

新手小白的pytorch学习第一弹-------张量

1 导入pytorch包 import torch2 创建张量&#xff08;tensor&#xff09; scalar标量 scalar torch.tensor(7) scalartensor(7)scalar.ndim查看scalar的维度&#xff0c;因为scalar是标量&#xff0c;所以维度为0 0scalar.shapetorch.Size([])torch.item()7vector&#xf…

coco_eval 使用

参考 coco eval 解析 COCO目标检测比赛中的模型评价指标介绍&#xff01; coco 的评估函数对应的是 pycocotools 中的 cocoeval.py 文件。 从整体上来看&#xff0c;整个 COCOeval 类的框架如图&#xff1a; 基础的用法为 # The usage for CocoEval is as follows: cocoGt…

JUC并发编程-05:线程高级部分-源码解读

线程高级部分-源码解读 多线程高并发底层锁机制与优化最佳实践深入JDK源码理解LongAdder的分段CAS优化机制 公平锁和非公平锁原理解析 多线程高并发底层锁机制与优化最佳实践 深入JDK源码理解LongAdder的分段CAS优化机制 多个线程进入&#xff0c;为了防止空转&#xff0c;所…

一文入门【NestJs】Controllers 控制器

Nest学习系列 ✈️一文带你入门【NestJS】 ✈️前言 流程图 Controllers 控制器主要负责处理传入请求&#xff0c;并向客户端返回响应&#xff0c;控制器可以通过路由机制来控制接收那些请求&#xff0c;通常一个Controllers种会有多个匹配路由&#xff0c;不同的路由可以知…

react 组件通信 —— 父子传值 【 函数式/类式 】

1、函数式组件通信 父子间通信 —— 父传子 父组件 export default function father() {return (<div style{{width:400px,height:200px,background:pink,marginLeft:500px}}>我是父组件<hr /><Son name{"韩小刀"}/></div>) } 子组件 ex…

Spark源码详解

https://www.cnblogs.com/huanghanyu/p/12989067.html#_label3_3

【开源项目】H264码流格式解析

目录 1.概述2.头文件的定义2.1 基础头文件&#xff08;base.h&#xff09;2.2 H264码流读取文件&#xff08;bs.h&#xff09;2.2.1 单比特读取函数&#xff08;bs_read_u1&#xff09;2.2.2 指数哥伦布无符号编码&#xff08;bs_read_ue&#xff09;2.2.3 指数哥伦布有符号编码…

这类工作要被大语言模型取代?

春节前&#xff0c;哈佛的一篇文章带来了思考。 美国哈佛大学网站上有一篇文章探讨了ChatGPT对写作工作的代替可能性。 文章内容是围绕哈佛大学的一位校聘作家和一位有名望的心理学教授之间的对话展开&#xff0c;主要讲了一个基本的观点&#xff1a; 类似ChatGPT这样的人工…