目的:本文章欲记录制作类似绝地求生游戏中上方的方向轴的步骤。
目录
一.创建文件
先在Content文件下创建一个文件夹,命名好。这里我命名为UMG。
右键内容面板,创建用户界面→控件蓝图,并命名为W_UserHUD,用于用户界面。
再创建一个控件蓝图,命名为W_RotationBarWidget,用于存放坐标轴。
二. 编辑方向轴
打开W_RotationBarWidget,左侧添加一个垂直框(vertical Box),将视图右上角的填充屏幕换为所需(目的是为了添加到HUD中)。
之后在垂直框下面添加一个覆层(overlay)。
再在覆层下添加一个图像(image),用于时刻指向中间位置。
之后在垂直框下添加一个画布面板(Canvas Panel),画布面板下添加一个图像(image)。
选中垂直框,右侧细节面板处搜索clipping,将“继承”改为“剪切到边界”(这样内容超出边框就不显示了)。
将尺寸X:改为500,尺寸Y:改为55(看个人需求)。
选中画布面板,将其调为水平、垂直居中对齐。
覆层下的图片也进行居中操作。
之后去阿里图库下载一个倒三角图片(白色),重命名为T_RotationBarTriangle。
在虚幻引擎中,新建文件夹Textures—UMG,将方向轴(提前做好)和倒三角图片导入。
打开W_RotationBarWidget,左侧选中覆层下的图片,右侧细节面板处图像,找到倒三角。
同理,也导入方向轴。
设置尺寸X:为1500,尺寸Y:为40(这是编辑图片时设置的大小)。对齐X、Y均为0.5,位置X、Y均为0,瞄点居中。
再打开蓝图,创建函数,命名为UpdateRotationBar(更新方向轴)。
在事件图表中,调用该函数,与事件tick连线(目的是每一帧都调用该函数)【即为实时更新】。
打开创建的函数,获取玩家pawn;is valid【前面是问号的那个】(判断是否有效); (从‘获取玩家pawn的右侧引脚处拉线’)获取actor旋转。
效果如图:
之后创建函数CalculateRotationBarLocation(目的是计算方向轴的实时位置)
打开该函数,点击一下,左下侧输入,点击加号,添加一个“旋转体”,命名为Rotator。
输出,添加一个“浮点”,命名为Translation X。(下图命名错误,不应为Angle)
再将C函数(简写)在左侧细节面板处设为纯函数(目的是只传入数值就行),编译保存。
之后在U函数(简写)中,将变量方向轴拖出来,设置渲染平移(Set Render Translation),创建向量2D。
连线,如下图。
再次返回到C函数(简写),将函数Rotator引脚拉出,拆分旋转体,Z轴拉出,搜索乘号,找到浮点乘浮点,输入25,引脚拖出,搜索浮点除以浮点(打一个 / 符号即可) ,输入-9,之后连接上返回节点。
如图所示:
三.编辑UI界面
打开W_UserHUD,添加覆层,并将其改为1920×1080大小。
瞄点选择居中。
之后在左侧,控制板里,用户创建—W Rotation Bar Widget,放到覆层下边,右侧选择水平居中。
右侧细节面板,将填充展开,设置顶部为25。
四.编辑关卡蓝图
返回关卡,打开关卡蓝图。
写入以下蓝图,保存即可。(不要忘记class中选择HUD)
五.后续优化
2021-08-16 16:44 优化:
由于上述操作完成后,我发现坐标轴是跟随玩家角色的朝向改变的,这与某些游戏的方向轴不符,于是在查阅资料后,做出了以下优化。
将获取“玩家pawn”和“获取actor旋转”改为了“获取玩家摄像机管理器”和“获取摄像机旋转”,成功改成了自己想要的模样。
【以上总结参照UP主‘“我是胡嘿嘿哟”教学视频】