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到关卡当中,编译保存运行效果如图

相关推荐

  1. 实现功能实战示例

    2024-03-30 00:22:01       32 阅读
  2. react实现插件

    2024-03-30 00:22:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 00:22:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 00:22:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 00:22:01       82 阅读
  4. Python语言-面向对象

    2024-03-30 00:22:01       91 阅读

热门阅读

  1. 五、常见古典加解密

    2024-03-30 00:22:01       40 阅读
  2. vue3 hooks之事件广播(支持跨标签页)

    2024-03-30 00:22:01       35 阅读
  3. 监控运维工程师/阿里acp

    2024-03-30 00:22:01       41 阅读
  4. YOLOv5-小知识记录(二)

    2024-03-30 00:22:01       45 阅读
  5. 数据链路层(四):数据链路层协议

    2024-03-30 00:22:01       43 阅读
  6. C# 异步与 Unity 协程(实例讲解)

    2024-03-30 00:22:01       41 阅读
  7. math模块篇(五)

    2024-03-30 00:22:01       34 阅读
  8. 回溯算法|77.组合

    2024-03-30 00:22:01       38 阅读