Unreal Engine 钥匙门:用 AI 搭建需要两把钥匙的门
如何在 Unreal Engine 中制作钥匙门:一把红钥匙、一把蓝钥匙和 Keys 0/2 计数,集齐两把后石门向上滑开 400 个单位,由一个 AI 请求搭建。
Unreal Engine 中的钥匙门是三个小点子:一把可以拾取的钥匙,一个记住你有哪些钥匙的计数器,以及一扇在你触碰时只问一个问题的门。两把都有吗?有,就打开;没有,就告诉你没有。最简单的做法,是用一个请求让 AI 一次搭好整个系统,包括钥匙、门和屏幕文字。
在这篇演示中,Ultimate Engine CoPilot 搭建了一扇石门,只有同时持有红钥匙和蓝钥匙时才会打开。你会看到完整的提示词、AI 在屏幕上发现的一个 bug,以及一段通俗易懂的双钥匙门原理说明。
完成后的门是什么样
雪地里有一扇石门,旁边有两把钥匙,一红一蓝。屏幕顶部有一行小字:“Keys 0/2”。你碰一下门,它显示 “Door locked, you need two keys”。你拾起第一把钥匙:“Keys 1/2”。第二把钥匙:“Keys 2/2”。现在你再碰门,它向上滑开。

左侧的石门和雪地上的玩家。
提示词
复制下面这段,改一改颜色或滑动时间,看看 AI 会搭出什么:
Make a door that needs two keys. Create BP_KeyPickup in /Game/Series/EP41_TwoKeyDoor, a floating spinning key with a Color variable, red or blue, that is collected when the player touches it, with a small pop of particles replaced by a quick scale-down. Create BP_TwoKeyDoor in the same folder, a stone door 300 units wide and 400 high that slides up 400 units over 1.5 seconds once the player has collected both a red and a blue key. Show a small text in the top centre below the existing Blizzard box: Keys 0/2, Keys 1/2, Keys 2/2, and Door opened. If the player touches the door with fewer than two keys, show Door locked, you need two keys for 2 seconds. Keep the slide height and time as variables. Place the door near the player start, a red key 800 units to its left and a blue key 800 units to its right. Then play test it: touch the door with no keys and check the locked text, collect the red key and check Keys 1/2, collect the blue key and check Keys 2/2, touch the door and check it opens, and fix anything that does not work.
看看这个请求是如何讲一个小故事的。没有钥匙:锁着。一把钥匙:仍然锁着。两把钥匙:打开。每个状态都有自己的文字,AI 会把它们逐一搭建并测试。再看数字:400 个单位、1.5 秒和 2 秒。它们会变成你可以修改的变量。
AI 如何搭建它
AI 先读取项目。它找到 HUD 中的 Blizzard 框以及它在哪里结束,这样钥匙文字就能刚好放在它下面。它还检查了另一集里的一扇旧门,以便复用其中的石头材质。
接着资产陆续出现:一个包含 Red 和 Blue 的颜色枚举、两个钥匙材质、钥匙 Blueprint、门 Blueprint 和用于显示文字的小型 HUD Widget。材质是在 Construction Script 里应用的,所以在你按下 Play 之前,钥匙在编辑器里就能显示正确的颜色。门的滑动由 Timeline 实现。你碰到钥匙时,它会通知门,在 0.2 秒内缩小到消失,然后移除自己。

门的图表:触碰时检查两把钥匙,然后由 Timeline 把门向上滑开。
试玩测试与一个 bug
十二项检查,全部通过:开始时是 “Keys 0/2”,然后是上锁提示,拿到红钥匙后是 “Keys 1/2”,拿到蓝钥匙后是 “Keys 2/2”。门开始滑动,滑到一半时约 200 个单位,最终正好升高 400 个单位。
然后 AI 查看了一张截图,发现了一个真正的 bug。钥匙文字锚定在左上角,所以有一半在屏幕外面。它把文字重新锚定到顶部居中,再稍微下移到 Blizzard 框下方,并重新检查。
报告

搭建了什么、放在哪里,以及需要留意什么。
报告列出了变量:门上的 SlideHeight (400) 和 SlideTime (1.5),以及每把钥匙上的钥匙颜色。它告诉你需要留意什么:
- 钥匙会向它在关卡中找到的第一扇门汇报,所以一个关卡里有两扇门的话,还需要再做一些工作。
- 这扇门借用了较早那一集里的石头材质 M_DoorStone。
- 如果在上锁提示正在显示时拾取了钥匙,文字会一直保持上锁提示,直到它的 2 秒结束,然后才显示计数。
- 那里的地面不平,所以门比玩家起点低约 200 个单位,钥匙的高度也略有不同。
- 项目的主菜单在开始游戏时仍会出现在屏幕上方。
测试还把玩家传送到了每个地点。这也是视频里展示一次真实运行的原因。
双钥匙门的工作原理,通俗讲
每把钥匙都有颜色。玩家碰到钥匙时,钥匙告诉门:我是红色的,或者:我是蓝色的。门存储两个答案,有红钥匙和有蓝钥匙,并根据其中为真的数量更新文字。
玩家碰到门时,一个分支会同时检查这两个答案。如果两个都为真,Timeline 就会播放,门在滑动时间内向上移动滑动高度的距离,文字显示 “Door opened”。否则,文字显示 “Door locked”,并由一个两秒的计时器把它移除。由于滑动高度和滑动时间都是变量,改两个数字,就能做出厚重的大门,也能做出迅速的活板门。
扩展思路
- 第三把钥匙,金色的。
- 拾取钥匙时的小音效,以及门打开时沉重的石头声。
- 在屏幕上用图标而不是文字显示钥匙。
钥匙门提示词的四个技巧
- 为每个状态写出它自己的文字。
- 用数字给出滑动高度和时间。
- 说明每个部件相对于玩家起点放在哪里。
- 要求 AI 测试上锁的情况,而不只是打开的情况。
常见问题
在 Unreal Engine 5 中,如何制作需要两把钥匙的门?
给每把钥匙一种颜色。钥匙被触碰时,门记录这种颜色并更新计数器。玩家碰到门时,只有两个答案都为真才打开。
如何显示玩家有多少把钥匙?
使用一个小型文字 Widget,由门在每次拾取后更新:Keys 0/2、1/2 和 2/2,最后是 “Door opened”。
一个关卡里可以放两扇门吗?
按现在的搭建方式不行。钥匙会向它在关卡中找到的第一扇门汇报,所以两扇门还需要再做一些工作。
在你的项目中试试
在 产品页面 了解 Ultimate Engine CoPilot 能搭建什么,或者到 Fab 上获取。 了解 AI Blueprint 生成器 的工作原理。
本系列的更多搭建: Unreal Engine 压力板、Unreal Engine 拉杆与桥 和 Unreal Engine 交互提示。