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

UE4_Mouse_Interaction——拖拽物体的实现

鼠标拖拽物体,效果如下图:

1、新建PlayerController,更名字为MI_PlayerController,双击打开并设置参数:

2、新建GameMode,更名为MI_Gameinfo。参数如下设置:

3、新建材质,更名为BasicAsset02.参数节点如图:

勾选使用静态光照。

再新建材质,更名为BasicAsset01,节点如图:

再新建材质,更名为BasicAsset03,节点如图:

4、新建Actor,更名为MI_Sphere。添加静态网格体组件,细节面板如图:

5、设置MI_Sphere的构造函数Construction Scrip,对组件设置材质。如图:

6、完善鼠标事件OnBeginCursorOver(StaticMesh)

在玩家控制器中启用了鼠标悬停事件后,将鼠标指针移动到此组件上时调用此事件,

鼠标悬浮其上时先设置鼠标焦点样式

选择当前鼠标光标为手型

注意目标为玩家控制器对象的引用

因为玩家控制器类默认值参数中有默认鼠标光标样式,如图:

修改静态网格体的材质:

7、完善鼠标事件OnEndCursorOver(StaticMesh)

在玩家控制器中启用了鼠标悬停事件后,将鼠标指针从此组件上移开时调用的事件,

把鼠标光标样式设置为默认值。

把材质改回默认材质:

8、完善鼠标事件OnReleased(StaticMesh)

在玩家控制器中启用了点击事件后,鼠标悬停在此组件上并松开左键时调用的事件

需要做两件事,1是设置变量bEnableMouseOverEvents的值是否应生成actor/组件鼠标悬停事件。

设置为true

2是设置材质

9、完善鼠标事件OnClicked(StaticMesh)

在玩家控制器中启用了点击事件后,鼠标悬停在此组件上并点击左键时将调用的事件。

此时要做的1是设置变量bEnableMouseOverEvents的值是否应生成actor/组件鼠标悬停事件。

设置为false,组件不在生成鼠标悬停事件。2是设置材质:

3是打开Gate,设置Actor位置。

那么新的位置如何得到,首先我要按通道获取光标下的命中结果,命中结果的位置进行拆分,使用此位置的XY坐标,和Actor的Z坐标组成一个新的向量,赋予设置Actor位置的NewLocation参数即可。如下图所示:

10、完善Gate的其他引脚。

eventtick每帧检测门,鼠标移动到此组件上时和鼠标在此组件上松开左键时close Gate。

编译,保存。

11、拖拽几个MI_Sphere到关卡当中,编译保存运行效果如图

http://www.lryc.cn/news/328303.html

相关文章:

  • Tomcat配置https
  • Modelsim手动仿真实例
  • AXI-Stream——草稿版
  • 【编码器应用】第一节-编码器从从原理到应用详解
  • 瑞_23种设计模式_中介者模式
  • sqlite删除数据表
  • Spring Boot简介及案例
  • Learning To Count Everything
  • 大语言模型(LLM)token解读
  • 【Micro 2014】NoC Architectures for Silicon Interposer Systems
  • 《极客时间 - 左耳听风》01 | 程序员如何用技术变现?(上)【文章笔记 + 个人思考】
  • Typora结合PicGo + Github搭建个人图床
  • 【JavaWeb】Day27.Web入门——Tomcat介绍
  • 怎么更新sd-webui AUTOMATIC1111/stable-diffusion-webui ?
  • Apache Iceberg最新最全面试题及详细参考答案(持续更新)
  • 从TCP/IP协议到socket编程详解
  • uniapp开发小程序遇到的问题,持续更新中
  • C++经典面试题目(十一)
  • 设计模式(6):桥接模式
  • Java切面编程
  • 微服务demo(二)nacos服务注册与集中配置
  • 面试题库二
  • HarmonyOS实战开发-如何实现一个简单的电子相册应用开发
  • FFmpeg将绿幕视频处理成透明视频播放
  • 【2024系统架构设计】案例分析- 4 嵌入式
  • 基于javaweb(springboot+mybatis)生活美食分享平台管理系统设计和实现以及文档报告
  • 【MySQL探索之旅】MySQL数据表的增删查改——约束
  • 【Linux】体验一款开源的Linux服务器运维管理工具
  • STM32 软件I2C方式读取AS5600磁编码器获取角度例程
  • [WTL/Win32]_[初级]_[如何设置ListView的列宽不出现水平滚动条]