专业开发手机网站建设网络规划设计师培训
鼠标拖拽物体,效果如下图:

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

