Unreal Engine 指南针:用 AI 搭建指南针条 HUD
如何在 Unreal Engine 中制作指南针条:N、E、S、W 字母随镜头转动而滑动,带标记和以度为单位的朝向,由 AI 搭建并在四个方向上测试。
Unreal Engine 中的指南针条是三个小点子:摄像机所面对的方向,用一个角度表示;一排字母,每个字母放在它所属的角度上;以及一个窗口,只显示中间附近的字母。随着摄像机转动,这一排字母跟着滑动。最简单的做法,是用一个请求让 AI 一次搭好整个 HUD 元素。
在这篇演示中,Ultimate Engine CoPilot 在屏幕顶部搭建了一个指南针条,N、E、S、W 为金色。你会看到完整的提示词、AI 如何在四个方向上进行测试,以及一段通俗易懂的指南针条原理说明。
完成后的指南针是什么样
屏幕顶部有一条细长的条,显示你面对的方向。你转动摄像机,字母就向两侧滑动,就像游戏里真正的指南针。金色的 N,然后是 E,接着是 S,再是 W,标记下方的一个小数字显示以度为单位的朝向。

位于 Blizzard 框下方的指南针条,跟随摄像机转动。
提示词
复制下面这段,改一改可见的度数或颜色,看看 AI 会搭出什么:
Make a compass bar. Create WBP_CompassBar in /Game/Series/EP37_Compass, a thin horizontal bar at the very top of the screen, 600 pixels wide and centred, below the existing Blizzard box. It shows the direction the player's camera is facing as letters that slide sideways as the camera turns: N, NE, E, SE, S, SW, W, NW, with a small white triangle marker in the middle. The letters for the main directions N, E, S and W are larger and gold, the in-between ones smaller and white. Also show the heading in degrees as a number under the marker, for example 90. Create BP_CompassController in the same folder, an actor that I place once, that adds the widget to the screen and updates it every frame from the player camera's yaw. Treat world +X as North and world +Y as East. Keep the bar width and the number of visible degrees as variables. Place the actor near the player start. Then play test it: turn the camera to face +X and check the heading reads 0 with N in the middle, turn it to +Y and check 90 with E, turn it to -X and check 180 with S, turn it to -Y and check 270 with W, and fix anything that does not work.
关键在于设定的最后一部分:“将世界坐标 +X 视为北,+Y 视为东”。Unreal 里没有北,只有坐标轴。如果你不说明哪条轴是北,AI 就得自己选一条,最后你可能得到一个指向错误方向的指南针。所以一定要写明。
AI 如何搭建它
AI 先读取项目。它找到 HUD 顶部的 Blizzard 框,并测量它在哪里结束,这样指南针条就能刚好放在它下方。接着资产陆续出现:指南针条 Widget 和控制器 Blueprint。
控制器的逻辑:Begin Play 添加 Widget,Tick 读取摄像机的偏航角 (Yaw) 并移动字母。字母在条的两端附近淡出,所以不会突然冒出来或消失。

控制器图表:它添加 Widget,然后在每次 Tick 时根据摄像机更新它。
试玩测试
AI 首先要能转动摄像机,所以它先去找怎么做到这一点。然后检查四个方向:
- 面向 +X:朝向为 0,N 在正中间。
- 面向 +Y:90 和 E。
- 面向 -X:180 和 S。
- 面向 -Y:270 和 W。
它从控制器读取数字,从截图读取字母,相邻的字母在两侧的位置也都正确,比如 N 两侧的 NW 和 NE。四项全部通过。
然后是截图里的一个小问题:标记三角形碰到了中间字母的顶部。于是 AI 把条稍微加高,从 40 增加到 46 像素,并把字母下移。
报告

搭建了什么,以及需要了解什么。
条宽 (600) 和可见度数 (180) 是放置的 Actor 上的变量。报告对几件事毫不隐瞒:
- 最后一次改动,即把条加高,没有在另一次试玩中测试。布局能编译,但没有再运行一次。
- 条位于固定高度 y=150,以避开 Blizzard 框,该框的文字溢出了它的面板。这个偏移没有和 HUD 关联,所以如果你移动那个框,指南针不会跟着移动。
- 关卡尚未保存。
- 主菜单让截图变暗了。这也是视频里同时展示一次完整转一圈的真实运行的原因。
指南针条的工作原理,通俗讲
每一帧,控制器取出摄像机的偏航角,把它转换成 0 到 360 的朝向。零对应 +X,也就是我们定义的北。每个字母都有一个角度:N 在 0,E 在 90,依此类推。
对于每个字母,控制器算出它与朝向的差距,并把这个差距转换成它在条上的像素位置。可见度数之外的字母会被隐藏,靠近边缘的字母会淡出。由于条宽和可见度数是变量,改两个数字,就能做出宽的指南针,也能做出窄的。
扩展思路
- 指南针上的标记,比如沿着条滑动的任务标记。参见 Unreal Engine 目标标记。
- 标记下方显示到标记的距离,单位为米。
- 不转动摄像机时淡出的指南针条。
指南针提示词的四个技巧
- 说明哪条世界坐标轴是北。
- 说明条有多大,放在哪里。
- 说明哪些字母大,哪些字母小。
- 要求 AI 测试全部四个方向。
常见问题
在 Unreal Engine 5 中,如何制作指南针条?
每一帧读取摄像机的偏航角,把它作为 0 到 360 的朝向,根据每个字母的角度与朝向之差来摆放这一排字母,并隐藏可见窗口之外的字母。
Unreal Engine 中哪个方向是北?
Unreal 里没有北,只有坐标轴。选一条,并在请求里说明。这里 +X 是北,+Y 是东。
AI 为什么把条加高了?
在截图中,标记三角形碰到了中间字母的顶部。AI 把条从 40 像素加高到 46 像素,并把字母下移。
在你的项目中试试
在 产品页面 了解 Ultimate Engine CoPilot 能搭建什么,或者到 Fab 上获取。 了解 AI Blueprint 生成器 的工作原理。
本系列的更多搭建: Unreal Engine 目标标记、Unreal Engine 快速旅行 和 Unreal Engine 镜头缩放。