一、参考学习链接
1、https://tjgzs.blog.csdn.net/article/details/126262285?spm=1001.2014.3001.5502
2、https://blog.csdn.net/qq_43021038/article/details/127994992#comments_24355996
二、蓝图逻辑思维导图
三、项目设置
1、GameMode设置
2、PlayerController设置
3、世界场景设置
4、设置BP_MouseCtrl_Pawn为PlayerController0
5、给BP_MouseCtrl_Pawn添加弹簧臂和摄像机组件,并设置弹簧臂长度和将进行碰撞测试选项取消勾选。
6、给Actor_LL_Cube蓝图类添加Cube组件和NameText组件
四、蓝图类展示及解析
1、Actor_LL_Cube蓝图类的事件图表
(1)这里因为PlayerController0是BP_MouseCtrl_Pawn,所以这里获取鼠标左右键是否按下,以及鼠标X,Y轴,滚轮轴的数值都是获取的BP_MouseCtrl_Pawn的值,所以需要Actor_LL_Cube类和BP_MouseCtrl_Pawn蓝图类相互通信,此处用的直接暴露通信。
(2)Actor_LL_Cube的构造函数
(3)Actor_LL_Cube的旋转函数
(4)Actor_LL_Cube的鼠标拖拽函数
(5)Actor_LL_Cube的滚轮缩放函数
2、BP_MouseCtrl_Pawn蓝图类
(1)构造函数
(2)判断鼠标是否点击到Actor:这里的逻辑当鼠标只有点击了Actor_LL_Cube的类才会给HitActor赋值,点击其他的物体都给HitActor置空。而如果点击到空白处,也给HitActor置空,当HitActor==NULL时,则默认为操作摄像机,否则操作Actor
(3)旋转摄像机:即操作弹簧臂
(4)缩放镜头:即调整弹簧臂长度
(5)获取鼠标2D转3D的点和基于拖拽平面的交点
(6)事件图表
五、工程源码链接
链接:https://pan.baidu.com/s/1sZwfXBRRYOFjuY9-rImTMA
提取码:0wsb