【UE】绘制抛物线并投射物体

效果

步骤

1. 先新建父类为Actor的蓝图,这里命名为“BP_发射物”

打开“BP_发射物”,添加一个球形的静态网格体和一个发射物移动组件

2. 新建一个父类为角色的蓝图,这里命名为“BP_绘制抛物线”

打开“BP_绘制抛物线”

我们希望可以通过控制鼠标滚轮来控制发射距离的远近,因此先在事件图表中添加“鼠标滚轮轴”节点,如果我们将鼠标向前滚,该节点的引脚“Axis Value”输出的值就是正的,反之则是负的。

添加一个浮点类型的变量,这里命名为“发射距离”,默认值为400(cm)

将滚轮值乘100再加上初始的发射距离就得到抛物线的终点

因为不可能抛无限远,这里再添加一个限制范围,然后更新“发射距离”

接下来开始绘制抛物线

先添加两个自定义事件,分别命名为“开启抛物线”和“关闭抛物线”,当按下空格键的时候就执行“开启抛物线”,当松开空格键的时候就执行“关闭抛物线”事件。

在Tick后添加一个“Gate”门节点,当执行“开启抛物线”时就打开Tick事件的执行,反之则关闭

接下里添加一个本功能最重要的节点“按照对象类型预测发射物路径”,该节点可以根据传入的发射起始位置和发射速度来预测出抛物线上所有点的位置。引脚“Parojectile Radius”表示抛物线路径上绿色小球的半径,这里设置为35;引脚“Sim Frequency”表示绿色小球的密集程度,该值越大,输出引脚“Out Path Position”输出的点迹就越多;引脚“Max Sim Time”表示最大的预测时长,该值越大能够预测的抛物线的轨迹就越远。输出引脚“Out Path Position”输出的是预测出的抛物线上所有的点迹;输出引脚“Out Last Trace Destination”是最后一个点的位置。

为了能够编译通过,先将“按照对象类型预测发射物路径”节点的输入引脚“Object Types”提升为变量,默认值设置为“静态场景”

为了方便观察从哪一个位置发射出物体,这里先给“BP_绘制抛物线”添加一个球形的静态网格体,然后设置该网格体的无碰撞。

给球体一个初始的抛射方向

传入球体的初始位置和发射速度,其中发射速度由球体向前的方向*发射距离

添加一个样条组件

循环遍历所有的抛物线点,然后在每一个抛物线点位置处添加样条点

添加样条点后,继续添加样条网格体

样条网格体使用圆柱,向前轴设置为Z轴

设置样条网格体的起始和结束缩放

设置每个样条网格体的起始位置和结束位置

为了能够实时更新绘制抛物线,这里需要将每一个样条网格体添加到数组中

然后在开始绘制的时候先清空所有的样条点、样条网格体、抛物线路径点

折叠到函数,这里命名为“F_清除抛物线”

在事件“关闭抛物线”执行后再次调用“F_清除抛物线”

再添加一个摄像机组件,设置一下位置

3. 将“BP_绘制抛物线”拖入视口,然后设置自动控制玩家为玩家0

此时运行效果如下所示,可以通过空格控制抛物线的轨迹的绘制与清除,通过鼠标滑轮控制抛物线的抛掷距离

我们发现样条网格体(圆柱)太大了,将网格体缩放改小一点

再将摄像机位置和旋转改一下:

 此时效果如下:

如果还觉得抛物线绘制距离太短,我们可以将“Max Sim Time”的值改大一点

如果不想显示绿色的小圆球,可以将“Draw Debug Type”设置为无

此时效果如下:

如果希望能够沿着抛物线的方向抛射物体,我们可以在“关闭抛物线”事件执行后生成Actor,并设置发射物移动组件的速度。

此时效果如下所示:

参考视频:

https://www.bilibili.com/video/BV1jc411j74M/?spm_id_from=333.999.0.0&vd_source=36a3e35639c44bb339f59760641390a8

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

融云筑基,移动云加速构建高性能智能算力底座

自2022年11月以来,全球大模型数量迅速增加,以ChatGPT为代表的大模型已经成为世界数字科技领域新热点。大模型带来的算力需求迅速增长,未来智算场景将会有非常大的突破空间。 在“十四五”规划的指引下,各地政府积极投入智算中心建…

HTTP2

HTTP 确认访问用户身份的认证 某些Web页面只想让特定的人浏览,或者干脆仅本人可见。为达到这个目标,必不可少的就是认证功能。 何为认证 计算机本身无法判断坐在显示器前的使用者的身份。进一步说,也无法确认网络的那头究竟有谁。可见,为了弄清究竟是谁在访问服务器,就…

一种新的基于物理的AlGaN/GaN HFET紧凑模型

标题:A new physics-based compact model for AlGaN/GaN HFETs (IEEE MTT-S International Microwave Symposium) 摘要 摘要 - 针对AlGaN/GaN HFET,提出了一种无拟合参数的物理解析模型。对于非饱和操作,建立了两个接入区和栅极下方I-V特性的…

2023.11.27 关于 Mybatis 增删改操作

目录 引言 增加用户操作 删除用户操作 修改用户操作 阅读下述文章之间 建议点击下方链接先了解 MyBatis 的创建与使用 MyBatis 的创建与使用 建议点击下方链接先了解 单元测试 的创建与使用 Spring Boot 单元测试的创建与使用 引言 为了方便下文实现增、删、改操作我们先…

YOLO改进系列之SKNet注意力机制

摘要 视皮层神经元的感受野大小受刺激的调节即对于不同的刺激,卷积核的大小应该不同,但在构建CNN时一般在同一层只采用一种卷积核,很少考虑因采用不同卷积核。于是SKNet被提出,在SKNet中,不同大小的感受视野&#xff…

基于JavaWeb+SSM+Vue校园综合服务小程序系统的设计和实现

基于JavaWebSSMVue校园综合服务小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 摘 要 I Abstract II 第一章 绪 论 1 1.1选题背景 2 1.2研究现状 3 1.3研究内容 …

【蓝桥杯省赛真题48】Scratch放大镜游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

目录 scratch放大镜游戏 一、题目要求 编程实现 二、案例分析 1、角色分析

webpack项目工程初始化

一、初始化项目 默认系统已经安装node //初始化 pnpm init//安装webpack pnpm i -D webpack webpack-cli 新建一个index.html的入口文件 新建一个src文件存放js代码,src里面新建一个index.js package.josn配置打包命令 {"name": "webpack-cs&q…

anyRTC 融合音视频能力底座:助力企业数字化转型

随着全球化的发展,产业竞争日益激烈。数字化转型和创新成为了企业提高竞争力、实现可持续发展的重要手段,面对产业结构调整、资源环境挑战、数字技术与创新带来的行业颠覆与机遇,企业需要进行数字化转型和创新以适应新环境和新时代的挑战。 …

如何用Python批量删除视频的头尾(88)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 关注我,一起趣味学编程! 今天我们继续用Python玩转视频。 还是用Python的第三方库moviepy。 如果你对此文章感兴趣的话,可以看看之前的…

java中IO知识点概念

这里写自定义目录标题 内存中的数据以电子信号的形式表示,而磁盘中的数据是以磁场的方向表示。1.流的分类2.File类3.流的API 关键4.理解缓冲的作用-一次性多拿些读写文件的时候为什么要有缓冲流 -意义是什么缓冲流的使用 5.路径问题6.文件的创建7.内存和磁盘存储本质…

西南科技大学信号与系统A实验三(线性连续时间系统的分析)

一、实验目的 1.掌握用 matlab 分析系统时间响应的方法 2.掌握用 matlab 分析系统频率响应的方法 3.掌握系统零、极点分布与系统稳定性关系 二、实验原理 1. 系统函数 H(s) 系统函数:系统零状态响应的拉氏变换与激励的拉氏变换之比. H(s)=R(s)/E(s) 在 matlab 中可采用…