限时闪购许可证 30% 折扣,同样价格享更大代币包。许可证 30% 折扣 + 更大代币包距结束还有 …查看价格 → 查看 V2 的新功能 · 全新界面、Crew、Blueprint 转 C++、多人游戏测试以及编辑器内更新 阅读更新日志 →
所有文章
阅读约 4 分钟

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 秒内缩小到消失,然后移除自己。

BP_TwoKeyDoor 的事件图表,包含钥匙检查和滑动 Timeline

门的图表:触碰时检查两把钥匙,然后由 Timeline 把门向上滑开。

试玩测试与一个 bug

十二项检查,全部通过:开始时是 “Keys 0/2”,然后是上锁提示,拿到红钥匙后是 “Keys 1/2”,拿到蓝钥匙后是 “Keys 2/2”。门开始滑动,滑到一半时约 200 个单位,最终正好升高 400 个单位。

然后 AI 查看了一张截图,发现了一个真正的 bug。钥匙文字锚定在左上角,所以有一半在屏幕外面。它把文字重新锚定到顶部居中,再稍微下移到 Blizzard 框下方,并重新检查。

报告

AI 的报告,描述钥匙和门的 Blueprint、放置位置以及容易踩的坑

搭建了什么、放在哪里,以及需要留意什么。

报告列出了变量:门上的 SlideHeight (400) 和 SlideTime (1.5),以及每把钥匙上的钥匙颜色。它告诉你需要留意什么:

  • 钥匙会向它在关卡中找到的第一扇门汇报,所以一个关卡里有两扇门的话,还需要再做一些工作。
  • 这扇门借用了较早那一集里的石头材质 M_DoorStone。
  • 如果在上锁提示正在显示时拾取了钥匙,文字会一直保持上锁提示,直到它的 2 秒结束,然后才显示计数。
  • 那里的地面不平,所以门比玩家起点低约 200 个单位,钥匙的高度也略有不同。
  • 项目的主菜单在开始游戏时仍会出现在屏幕上方。

测试还把玩家传送到了每个地点。这也是视频里展示一次真实运行的原因。

双钥匙门的工作原理,通俗讲

每把钥匙都有颜色。玩家碰到钥匙时,钥匙告诉门:我是红色的,或者:我是蓝色的。门存储两个答案,有红钥匙和有蓝钥匙,并根据其中为真的数量更新文字。

玩家碰到门时,一个分支会同时检查这两个答案。如果两个都为真,Timeline 就会播放,门在滑动时间内向上移动滑动高度的距离,文字显示 “Door opened”。否则,文字显示 “Door locked”,并由一个两秒的计时器把它移除。由于滑动高度和滑动时间都是变量,改两个数字,就能做出厚重的大门,也能做出迅速的活板门。

扩展思路

  • 第三把钥匙,金色的。
  • 拾取钥匙时的小音效,以及门打开时沉重的石头声。
  • 在屏幕上用图标而不是文字显示钥匙。

钥匙门提示词的四个技巧

  1. 为每个状态写出它自己的文字。
  2. 用数字给出滑动高度和时间。
  3. 说明每个部件相对于玩家起点放在哪里。
  4. 要求 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 交互提示。

你觉得怎么样?

在你的编辑器中试试
适用于 Unreal Engine 5 的 1,655 个工具。
获取插件