【UE5】连接射频线案例教程

发布于:2025-04-17 ⋅ 阅读:(66) ⋅ 点赞:(0)

效果

【虚幻5】连接射频线Demo演示案例

步骤

1. 新建一个工程,创建如下文件夹以及游戏模式、Pawn、HUD、玩家控制器,这里分别命名为“MyGameMode”、“MyHUD”、“MyPawn”、“MyPlayerController”

2. 在世界场景中设置关卡使用的游戏模式、Pawn、HUD、玩家控制器

 

3. 在文件夹“Textures”中准备如下素材

在文件夹“Mesh”中包含如下3个静态网格体

4. 先创建一个基于“StaticMeshComponent”的Actor组件,这里命名为“BPC_射频接口”

该组件就只设置了一个外观

5. 根据准备的Mesh创建对应的设备Actor

其中“BP_交换矩阵”中包含如下1个静态网格体组件,以及2个前面创建的“BPC_射频接口”组件,碰撞预设均为“BlockAllDynamic”

6. “BP_变频设备”组成和“BP_交换矩阵”一致,包含1个静态网格体组件,2个“BPC_射频接口”组件

7. “BP_射频线”由2个静态网格体和1个缆索组件组成

这里对缆索组件做了如下设置

8. 打开“MyPlayerController”,在事件图表中添加鼠标左键点击的逻辑

9. 其中,“射线检测”节点为蓝图函数库“BPL”中定义的方法如下所示。(“MyPlayerController”事件图表中涉及到的“BP_射频线”中的方法“开启拖拽”、“关闭拖拽”、“设置默认射频头材质”在后面叙述。)

10. 回到“BP_射频线”,在事件图表中添加如下节点

首先当鼠标悬浮在射频头时去修改鼠标样式

事件开始运行时获取玩家控制器引用

开启拖拽后,设置射频头材质,然后根据当前拖拽的是射频头1或2来执行“BP_射频线”整体拖拽还是局部拖拽。

自定义事件“整体拖拽”逻辑如下,发出射线判断射线碰撞到的是否是组件“BPC_射频接口”,如果是就设置“射频头1”的颜色为绿色,并且根据“射频接口”的位置和朝向来设置“射频头1”的位置和旋转。

“局部拖拽”的逻辑和“整体拖拽”基本一致,唯一区别就是拖拽的是“射频头2”

11. 创建用户控件如下

12. 其中“WBP_Main”为主界面,只包含“WBP_DragUI”

13. “WBP_DragUI”包含两个图像控件,一个显示背景,一个显示图标

背景用的是创建的用户界面材质“M_BtnUnChoosed”

材质“M_BtnUnChoosed”如下,(需要先设置材质域为用户界面,混合模式为半透明)

在“WBP_DragUI”中,重载函数“OnMouseButtonDown”,当鼠标按下时侦测鼠标左键是否拖动

重载函数“OnDragDetected”,当拖动时创建“WBP_ImageDragUI”

“WBP_ImageDragUI”只包含一个图像控件如下

在“WBP_DragUI”中,添加如下逻辑,当拖动结束后在鼠标位置创建射线检测,在射线碰撞位置创建“BP_射频线”

在鼠标进入/离开时修改背景图像为“M_BtnChoosed”/“M_BtnUnChoosed”

“M_BtnUnChoosed”材质节点如下

14. 打开“MyPawn”添加弹簧臂和摄像机组件

添加如下3个浮点类型变量,这里默认值分别为5、1、5

添加交互逻辑如下

鼠标右键点击射频线打开的菜单“WBP_RightBtnMenu”如下

“WBP_RightBtnMenu”被创建时需要传入一个参数“DeleteObject”,表示被删除的Actor对象

删除和关闭按钮的逻辑如下

15. 在“WBP_Main”中设置“WBP_DragUI”在视口中的大小和位置

16. 打开“MyHUD”,创建“WBP_Main”

最终运行效果如文章开头所示。


网站公告

今日签到

点亮在社区的每一天
去签到