【UE】用样条线实现测距功能(上)

本文介绍了如何在UnrealEngine中创建样条网格体3D模型,实现点击连线功能并实时显示两点间的距离。步骤包括设置模型、创建Actor蓝图、使用射线检测和自定义事件,以及创建控件显示距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

效果

步骤

一、创建样条网格体组件3D模型

二、实现点击连线功能 

三、实现显示两点间距离功能

效果

步骤

一、创建样条网格体组件3D模型

创建一个圆柱模型,这里底面半径设置为10mm,高度设置为1000mm

注意该模型的坐标轴在如下位置:

然后设置模型的坐标为世界原点

二、实现点击连线功能 

1. 将模型导入到UE中

给该网格体一个材质

对材质创建一个材质实例,调整参数自发光颜色和强度

2. 新建一个Actor蓝图,这里命名为“BP_Sphere”

该蓝图中只有一个球体组件,然后给该球体赋予上一步创建的材质实例

3. 再新建一个蓝图,这里命名为“BP_Spline”

打开“BP_Spline”,将根节点的可移动性设置为静态

在事件图表中,在事件开始运行后,添加一个样条组件赋予到一个变量上,然后清除样条组件上的所有的点,最后启用输入并显示鼠标光标

4. 再新建一个蓝图函数库,这里命名为“BPHL”

打开“BPHL”,添加一个新函数,这里函数命名为“射线检测”

该函数逻辑如下:

5. 回到蓝图“BP_Spline”中,创建一个自定义事件,这里命名为“测量”,在该事件执行后,发出一条射线,当射线碰撞到某处,我们获取到该处的位置,然后在该位置添加一个样条点和一个球体,再将圆柱赋予到生成的样条线上,再设置每一个样条的起始和结束点

为控制样条网格体的粗细,我们可以通过设置起始缩放和结束缩放节点实现(或者直接在“添加网条网格体组件”这个节点上,通过设置“Relative Transform”引脚来控制样条网格体缩放),这里变量“SplineMeshSize”默认值设置为1

当鼠标点击时调用自定义事件“测量”

6. 在关卡蓝图中创建蓝图“BP_Sphere”

此时效果如下所示:

我们发现样条网格体的材质没有显示出来,这里需要打开对应的材质,勾选上“使用样条网格体”

可以看到此时材质就正常显示了

如果觉得球体太大可以在“BP_Spline”的事件图表中适当缩小比例

三、实现显示两点间距离功能

1. 新建一个控件蓝图,命名为“WBP_Distance”,用于显示每两个样条点之间的距离

打开“WBP_Distance”,添加“画布面板”和“文本”控件,其中“文本”控件的锚点设置在中下,位置X位置Y均为0,尺寸X尺寸Y分别设置为100和40,对齐设置为(0.5,1),勾选“大小到内容”。最后设置“屏幕尺寸”为“所需”

在图表中创建一个浮点型变量,这里命名为“Distance”

为文本控件的内容创建一个绑定函数

当变量Distance发生改变时,文本内容也会相应变化

2. 打开蓝图“BP_Spline”,先将第二步(实现点击功能)中的节点折叠到函数

在“点击连线”的逻辑后,将我们制作好的控件蓝图添加进来

至于控件蓝图显示在场景中的哪些位置,应该是显示在每两个样条点中间的位置

此时运行效果如下:

可以看到在上面的效果中,第一个点也出现了距离显示,我们可以判断一下当前生成的样条点数量是否大于1,只有生成的样条点数量大于1时才显示控件蓝图

此时就不会在第一个点位置生成控件蓝图了

接下来就要设置距离的内容

在折叠的函数“F_点击连线”中通过两个样条点的位置计算出向量差的长度,除100将cm转为m

将结果提升为全局变量“Distance”

在事件图表中,获取到控件组件包含的控件蓝图,将该控件蓝图类型转化为“WBP_Distance”,在修改控件蓝图中的变量“Distance”

此时我们就可以准确的计算出两点之间的距离了,此时效果如下:

下一篇

【UE】用样条线实现测距功能(下)

视频链接:

https://www.bilibili.com/video/BV1tT4y1r7nD/?spm_id_from=333.788&vd_source=36a3e35639c44bb339f59760641390a8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhichao_97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值