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

news2024/9/22 17:28:46

效果

步骤

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.coloradmin.cn/o/1264355.html

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

相关文章

距离向量路由协议——IGRP和EIGRP

IGRP-内部网关路由协议 IGRP(Interior Gateway Routing Protocol,内部网关路由协议)是一种动态距离向量路由协议,它是Cisco公司在20世纪80年代中期设计的,是Cisco专用路由协议。目前在Cisco高版本的IOS已经对IGRP不提…

掌握 Node.js 事件循环,让代码更高效

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

socket 一个完整的不错的示例

从客户端向服务器端发送信息时&#xff0c;在服务器端有打印显示&#xff1b; 检测环境常用&#xff0c;备份一下 0&#xff0c;公共头文件代码 //config.h#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #inc…

Android中的多进程

在Android中也可以像pc一样开启多进程&#xff0c;这在android的编程中通常是比较少见的&#xff0c;以为在一个app基本上都是单进程工作就已经足够了&#xff0c;有一些特殊的场景&#xff0c;我们需要用多进程来做一些额外的工作&#xff0c;比如下载工作等。 在Android的An…

UI上传组件异步上传更改为同步

实现异步方法 JavaScript 异步 实现异步的五种实现方法_js异步-CSDN博客 这两种比较经常用。 因为上传组件是异步上传的通过Async和await配合使用可以上传完照片视频后返回的地址在继续走下去&#xff0c;而不是图片视频地址还未获取时就上传后端了。

leetcode算法之字符串

目录 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 最长公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//法一&#xff1a;两两比较string ret strs[0];for(int i1;i<strs.size();i){ret f…

[栈溢出+参数跟踪] [ZJCTF 2019]Login

题目来源 buuctf——[ZJCTF 2019]Login 本题主要考察参数溯源的能力。 参考链接 https://zhuanlan.zhihu.com/p/570607303 题目信息 64位&#xff0c;ubuntu16&#xff0c;开了金丝雀 C风格的代码&#xff0c;并且将admin登录信息写入代码中。 溢出点不在这里&#xff0c;但是…

井盖倾斜怎么办?智能井盖传感器监测方法

井盖倾斜是一个紧迫的问题&#xff0c;如果不及时处理可能会导致道路安全性下降&#xff0c;进而增加车辆和行人发生意外的风险。为应对这一问题现已开发出智能井盖传感器&#xff0c;它可以持续监测井盖的状态&#xff0c;一旦发现倾斜等异常情况会立即发出警报。 在智慧城市的…

揭秘:软件测试中Web请求的完整流程!

在软件开发的过程中&#xff0c;测试是一个至关重要的环节。而在现代互联网应用中&#xff0c;Web请求是很常见的一个测试需求。本文将介绍Web请求的完整测试流程&#xff0c;帮助读者更好地理解软件测试的关键步骤。 一、测试准备阶段 在进行Web请求测试之前&#xff0c;测试…

【C】语言 sizeof和strlen的对比

目录 sizeof和strlen的对比 1.1 sizeof 1.2 strlen strlen的模拟实现 strlen介绍 1.3 sizeof 和 strlen的对比 sizeof和strlen的对比 1.1 sizeof 在学习操作符的时候&#xff0c;我们学习了 sizeof &#xff0c; sizeof 计算变量所占内存内存空间⼤⼩的&#xff0c;…

我试图通过这篇文章告诉你,什么是神奇的泛化调用。

关于 RPC 调用&#xff0c;大家肯定都是比较熟悉的了&#xff0c;就是在微服务架构下解决系统间通信问题的一个玩意。 其中的典型代表之一就是 Dubbo 了&#xff1a; 在微服务架构下&#xff0c;我们针对某个 RPC 接口&#xff0c;我们一般有两个角色。 服务消费者 (Dubbo Con…

【前端首屏加载速度优化(0): 谷歌浏览器时间参数】

DOMContentLoaded 浏览器已经完全加载了 HTML&#xff0c;DOM树构建完成&#xff0c;但是像是 <img> 和样式表等外部资源可能并没有下载完毕。 Load DOM树构建完成后&#xff0c;继续加载 html/css 中的外部资源&#xff0c;加载完成之后&#xff0c;视为页面加载完成。…

继电保护-变压器纵联差动保护MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 原理概述 差动保护是在两端设置的保护&#xff0c;通过比较两端测回来的电气量&#xff0c;进而看是否需要动作&#xff0c;纵联差动保护是变压器主保护。 纵联差动保护基本原则 双绕组变压器实现纵联差动…

java反射和注解2-自定义注解

对反射有一定了解过后学习注解就会轻松许多&#xff0c;这篇文章会创建创建字段&#xff0c;方法&#xff0c;参数上面的注解&#xff0c;并且通过反射的形式将注解内容拿出来。 下面是自定义注解的简短讲解 1&#xff0c;自定义注解&#xff0c;创建一个只能修饰方法的注解 …

【外汇天眼】概率之道:规则交易背后的心态与风险控制

交易的结果&#xff0c;无外乎盈利和亏损。 对于这些结果&#xff0c;我们的心态管理很重要、很重要&#xff01; 这涉及到“保住江山”和“东山再起”。 先来说说交易盈利的结果 当一个人能够稳定盈利的时候&#xff0c;很容易产生自我麻痹、忘乎所以的飘飘然心态&#xff0…

C++基础 -9- 函数的默认参数

函数默认格式(图片代码段呈现) #include "iostream"using namespace std;void rlxy(int a100) {cout << a << endl; }int main() {rlxy();rlxy(99); }函数默认参数注意事项 函数的默认参数从左开始推导 错误写法 正确写法

一篇学会cron表达式

1、定义 Cron表达式是一种用于定义定时任务的格式化字符串。它被广泛用于Unix、Linux和类Unix系统中&#xff0c;用于在指定的时间执行预定的任务。Cron表达式由6个字段组成&#xff0c;每个字段通过空格分隔开。 在本文中&#xff0c;我们将学习如何理解和编写Cron表达式。 C…

高防服务器和高防CDN的区别是什么?

现今大环境下攻击问题愈发严峻&#xff0c;许多网站有遇到被攻击导致网站崩溃&#xff0c;资源消耗的问题&#xff0c;那么这时候高防就是给为站长&#xff0c;企业等的第一选择了&#xff0c;那边目前高防CDN和高防服务器这两种抵御DDoS攻击的两种主流防御&#xff0c;那种会更…

有趣的代码——猜数字游戏的实现

前面介绍过很多的C语言常识&#xff0c;但是我们都知道“兴趣是最好的老师”&#xff0c;所以&#xff0c;今天我们用之前讲过的一些知识&#xff0c;加上部分新补充的知识点&#xff0c;写一个“猜数字”的小游戏&#xff0c;来丰富我们的编程学习生活&#xff0c;感受来自C语…

win系列:电脑设置关闭屏幕和休眠时间不起作用解决方案

电脑设置关闭屏幕和休眠时间不起作用解决方案 一. 笔记本电脑30s自动锁屏&#xff0c;怎么设置都没用?方法一&#xff1a;使用快捷键方法二&#xff1a;开始菜单设置如果需要对锁屏进行背景等的设置&#xff0c;建议你采用这个方法来进行。方法三&#xff1a;控制面板设置怎么…