当前位置: 首页 > news >正文

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

效果

【虚幻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”

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

相关文章:

  • 数据结构与算法[零基础]---4.树和二叉树
  • 视频孪生重构施工逻辑:智慧工地的数字化升级
  • JVM 内存调优
  • ctfshow——web入门191~194
  • 用户态网络缓冲区
  • 【课题推荐】多速率自适应卡尔曼滤波(MRAKF)用于目标跟踪
  • Hi3518E官方录像例程源码流程分析(三)
  • JVM:程序计数器、虚拟机栈、本地方法栈
  • Docker Compose 中配置 Host 网络模式
  • Spring Task(笔记)
  • Android --- FrameWork 入门:Product是什么?
  • winfrom 查询某字符串 找到它在 richTextbox 的位置 定位 并高亮 并且滚动定位到所查询的字符串所在的行
  • Meltdown原理介绍:用户空间读取内核内存
  • apt3.0和apt2.0的区别
  • AI数字人分身无限克隆,开启IP视频创作新纪元!
  • 如何判断一个js对象是否拥有某个属性(区分自身属性和原型链上的属性)?
  • [管理与领导-129]:向上管理-组织架构、股权架构、业务架构、流程架构,看每个人在组织中的位置和重要性
  • Angular 框架详解:从入门到进阶
  • 数据库主从复制
  • 解决Ubuntu终端命令不能补全的问题
  • 做音乐的网站/百度竞价推广的技巧
  • 金华建设网站/百度账号登录不了
  • 笔记本做网站/百度指数可以用来干什么
  • 哪里找做网站的客户/搜资源的搜索引擎
  • 网站开发公司售后服务/seo网站排名厂商定制
  • 教育培训网站建设/微信公众号推广2元一个