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

Unreal Engine 压力板:用 AI 搭建压力板与门的解谜机关

如何在 Unreal Engine 中制作踩上去就开门的压力板:石板、滑动的门和 LinkedGate 变量,由一个 AI 请求搭建,并在首次测试失败后修复。

Unreal Engine 压力板谜题其实只有三个小点子:一块能感知玩家站上去的板子,一扇能开能关的门,以及一条让板子知道该通知哪扇门的关联。最简单的做法,是用一个请求让 AI 一次搭好整套谜题,包括压力板、门和它们之间的关联。

在这篇演示中,Ultimate Engine CoPilot 搭建了一块石质压力板:玩家站上去时门打开,玩家离开后门再次关闭。你会看到完整的提示词、第一次失败的测试、AI 是如何修复的,以及一段通俗易懂的原理说明。

完成后的谜题是什么样

一块石板在雪地上泛着红光。你踩上去,它微微下沉,光芒变成绿色。远处,一扇石门向上滑开。你走下来,压力板重新变红,两秒钟后,石门缓缓落回原位。

玩家站在雪地上的压力板上,压力板发出绿光

压力板被踩下,发出绿光。

提示词

复制下面这段,改一改延迟时间,或者再加一块压力板,看看 AI 会搭出什么:

Make a pressure plate and gate puzzle. Create BP_PressurePlate in /Game/Series/EP21_PressurePlate, a square stone slab 200 by 200 units that sinks 10 units when the player stands on it and glows green while it is pressed, and red while it is not. Create BP_Gate, a stone gate made from two pillars and a thick bar between them, that slides up 400 units in 1.5 seconds when the plate is pressed, and slides back down 2 seconds after the player steps off the plate. The plate has a variable called LinkedGate that points to the gate. Place the plate on the snow near the player start and the gate about 1000 units away, and link them. Then play test it: stand on the plate and check the gate opens, step off and check the gate closes after the delay, and fix anything that does not work.

值得留意的是那个名为 LinkedGate 的变量。它是所有由两部分组成的谜题的关键:一个 Actor 持有另一个 Actor 的引用。在请求里把这一点说清楚,AI 就会按这种方式搭建,这样你就可以放置十块压力板和十扇门,再到编辑器里逐一关联。

AI 如何搭建它

AI 会先读取项目,找到需要的工具。接着资产陆续出现:一个颜色可以调整的发光压力板材质,以及两个 Blueprint。门复用了之前某扇门用过的石头材质,这是个好习惯,能让整个项目保持统一的外观。

压力板负责监听玩家。门有 Open 和 Close 两个动作,其中 Close 会先等待两秒。如果你在等待期间重新踩回压力板,关门就会被取消。这一点没有人要求过,却正是让谜题手感到位的那类细节。

压力板的 Blueprint 图表,包含被踩下与未被踩下两条分支

压力板的图表。玩家踩上去时,压力板下沉、变绿,并通知门打开。玩家离开时,压力板升起、变红,并通知门开始关闭。

第一次测试失败,AI 随即修复

第一次运行没有通过。门是打开了,但压力板出了问题。AI 搭建压力板时,触发盒 (trigger box) 成了 Blueprint 的根组件,导致石板和触发盒的高度都不对,玩家被顶离了压力板。

AI 读取测试结果,找到原因,把压力板重新放回地面,修复了组件层级。然后它又把测试跑了第二遍。这就是完整的循环:测试、读取结果、修复、再测试。

第二次运行,10 项检查全部通过:

  • 玩家到达之前压力板处于未按下状态,踩上去后下沉 10 个单位。
  • 稍后门升到一半的位置,说明它是平滑滑动而不是瞬间跳变,最终升高 400 个单位。
  • 玩家离开后,压力板升起,门保持打开约 1.5 秒,然后关闭。

报告

AI 的报告,列出通过的检查项和需要了解的事项

报告列出了各项检查,同样有用的是,它也写明了 AI 没有检查什么。

报告里写明了没有检查的内容:AI 没有给发光效果截图,所以绿色和红色并没有被实际看过。只有玩家能触发压力板,敌人和物体不行。门的横梁位于中间高度,因此能挡住通道,立柱会随横梁一起升起。此外,关卡还没有保存,所以在你用一个名字保存关卡之前,关闭编辑器会丢失已放置的 Actor。

压力板的工作原理,通俗讲

压力板带有一个触发盒。玩家进入触发盒时,压力板会做三件事:自身下沉,把发光颜色改成绿色,并对关联的门调用 Open。门有两个事件。Open 通过 Timeline 把门向上滑开。Close 先等待两秒,再把门滑回原位。如果等待期间玩家又回到压力板上,这次等待就会被取消。

由于距离、速度和延迟都是变量,只要改几个数字,就能做出快速的门,也能做出缓慢厚重的门。

扩展思路

  • 需要同时踩下两块压力板才会打开的门。
  • 一旦打开就永远保持开启的门。
  • 一个可以压住压力板的沉重箱子,玩家必须把它推上去。

压力板提示词的四个技巧

  1. 为连接两者的变量起一个名字。
  2. 说明压力板和门在被踩下与松开时各自要做什么。
  3. 给关门设定一个延迟。
  4. 让 AI 测试两个方向。

想让 CoPilot 替你写出这样的提示词,可以阅读 如何为 Unreal Engine 编写 AI 提示词。

常见问题

在 Unreal Engine 5 中,如何让压力板打开门?

给压力板添加一个触发盒,再加一个引用门的变量。玩家与触发盒重叠时,压力板就对门调用 Open;玩家离开时,调用 Close。

如何把压力板和门关联起来?

在压力板上添加一个指向门的变量,本例中叫 LinkedGate。然后在编辑器里为每个实例单独设置,这样一个 Blueprint 就能驱动许多个谜题。

为什么第一次测试失败了?

触发盒成了 Blueprint 的根组件,导致石板和触发盒的高度不对,把玩家顶离了压力板。AI 从测试结果中发现了这一点,并修复了组件层级。

在你的项目中试试

在 产品页面 了解 Ultimate Engine CoPilot 能搭建什么,或者到 Fab 上获取。

本系列的更多搭建: Unreal Engine 传送门、Unreal Engine 目标标记、Unreal Engine 环形竞速 和 Unreal Engine 拉杆与桥。

另请参阅: Unreal Engine 双钥匙门。

你觉得怎么样?

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