视频教程:UI能够根据距离远近缩放,并且能够鼠标追踪识别UI
关键词:linetrace/C++/十字准星Crosshair/碰撞盒
007 Trace for Widget
(12分钟的时候 UE5代码书写格式↓↓↓)
制作3dUI(出现在关卡里的)
先简单的创建一个血条widget,重命名为HelathBar
默认的Widget有很多弊端:大小不会随着摄像机的拉远而变小,并且遇到遮挡并不会被遮挡
将场景里的小黄人改成蓝图
直接选择创建
这样子就能控制血条始终朝向屏幕,并且有大小遮挡关系。
制作一个3D按钮
创建一个新UI蓝图WB_Interactive
制作一个正方形按钮,设置鼠标悬停的时候会变粉色
设置蓝图事件,新建一个实数变量Number,
并回到编辑面板里将文本与Number变量绑定起来
在场景里新建一个actor加上刚刚的WB_Interactive组件,并摆放到合适的位置
在第一人称蓝图里加上控件交互组件,放在枪的子集里
把交互组件放到枪口上
书写交互蓝图
这样子之后,每点击数字按钮,数字都能变大
总结步骤
1.要有widget interaction(控件交互组件)
2.通过控件交互组件,击中UI
3.发送按键信息
制作3D悬浮键盘
新建一个actor类BP_DIsplay与一个UI控件WB_Display
把这个WB_Display放入BP_Display中,勾选以所需大小绘制,放到场景的适合位置
再制作键盘WB_Keypad,并设置好悬停时候改变颜色。与之前一样,新建一个蓝图类BP_Keypad,放入Widget控件(WB_Keypad),并把BP_Keypad放到场景里(勾选Draw at Desired Size)
下面书写通信蓝图
首先保证这里的playerController的点击事件已启用
来到WB_Keypad的蓝图面板中,首先先新建两个变量
设置一个事件:即在键盘输入时,不会获取焦点,焦点始终停留在之前的上面的文本框里
在WB_Keypad蓝图中,新建一个事件分发器,并把enter按钮绑定给他
来到BP_Keypad
纯了解:
UI的射线碰撞与下面两个变量有关,相等的话就能调用
拖拽UI
新建一个WB_GragBar,里面简单地制作一个血条
再新建一个WB_VisualDrag,同样制作一个血条(用作拖拽时候呈现的图片)
新建一个类,重命名为DragDropOperation
在上面这个DragDropOperation蓝图类里面新建DragOffset的变量
重写重载函数On Drag Detected
新建一个UI控件WB_DragScreen
设置可视性,释放时候可以检测