开始之前
完成第 3–4 课,能创建 Script,知道变量、函数和 Output 的作用。
Course overview
上一课的触碰机关已经会回应你。这次,你要让游戏先检查一个条件,再决定做什么。就像游乐园会检查身高,探险基地的门也能检查能量。
先别急着连接金币或背包。我们先用一个数字模拟能量,把规则测试清楚;以后再接上真实的玩家数据。
完成第 3–4 课,能创建 Script,知道变量、函数和 Output 的作用。
一个根据 energy 变色、显示通行信息并改变碰撞状态的 Gate。
分别输入 3、5、8,得到三种预期结果;能解释为什么 5 应该被允许通过。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
新建 Baseplate,另存为“姓名缩写_Lesson05”。这一课是独立小实验,不必把前一课的所有脚本搬过来。
= 是把右边的值存进左边;== 是问“两边相等吗”。比较的回答只有 true 或 false。
程序从上往下检查条件,进入第一个符合的分支后,就跳过同一组剩下的 elseif 和 else。先检查更高的门槛,才能区分“能量充足”和“刚好够用”。
and 表示两件事都要成立;or 表示至少一件成立;not 把真假反过来。把条件读成一句中文,比死记符号更容易。
不能只测试“能通过”的情况。3、5、8 分别检查不够、边界和更高分支。再试 4,你就能发现把 >= 写成 > 之类的小错误。
Step by step
新建 Baseplate,另存为“姓名缩写_Lesson05”。这一课是独立小实验,不必把前一课的所有脚本搬过来。
门先固定在地面上。Anchored 决定会不会被物理推动,CanCollide 决定能不能穿过去,它们解决的是两件不同的事。
Step by step
= 是把右边的值存进左边;== 是问“两边相等吗”。比较的回答只有 true 或 false。
>= 表示大于或等于。门要求至少 5 点能量,因此 5 也合格。这个“刚好碰到边界”的数字,最值得测试。
local energy = 5
print("Exactly five:", energy == 5)
print("Enough energy:", energy >= 5)
print("Not enough:", energy < 5)

Step by step
程序从上往下检查条件,进入第一个符合的分支后,就跳过同一组剩下的 elseif 和 else。先检查更高的门槛,才能区分“能量充足”和“刚好够用”。
下面是完整脚本,请替换刚才的实验。三个颜色只是反馈,真正决定通行的是 CanCollide。运行中的修改会在 Stop 后恢复。
local gate = workspace:WaitForChild("Gate")
local energy = 5
local REQUIRED = 5
if energy >= 8 then
gate.Color = Color3.fromRGB(70, 220, 130)
gate.CanCollide = false
print("Energy full: welcome!")
elseif energy >= REQUIRED then
gate.Color = Color3.fromRGB(255, 200, 70)
gate.CanCollide = false
print("Enough energy: you may enter.")
else
gate.Color = Color3.fromRGB(225, 80, 85)
gate.CanCollide = true
print("Need more energy:", REQUIRED - energy)
end
Step by step
and 表示两件事都要成立;or 表示至少一件成立;not 把真假反过来。把条件读成一句中文,比死记符号更容易。
把下面的小实验临时加在完整脚本末尾。它只打印规则,不会改变门。isOpen = false 时,即使能量足够,也不能进入正在维修的基地。
local isOpen = false
local canEnter = energy >= REQUIRED and isOpen
print("Can enter:", canEnter)
print("Closed for repairs:", not isOpen)
Step by step
不能只测试“能通过”的情况。3、5、8 分别检查不够、边界和更高分支。再试 4,你就能发现把 >= 写成 > 之类的小错误。
这节课的 energy 是整个脚本中的测试数字,还不是每位玩家各自拥有的能量。第 18 课会把类似规则放进服务器请求处理中。
Homework
将最低能量改为 6,高能量分支改为 10,重新测试 5、6、10。
用中文写出 if、elseif、else 各自处理哪一种情况。
让 isOpen = false 时始终保持门关闭,并在 Output 解释原因。
Exit questions
前者赋值,后者比较,比较会得到 true 或 false。
因为 8 也满足 >= 5。如果先进入较低门槛分支,就不会再检查较高门槛。
不会,它只关闭碰撞。颜色、透明度和碰撞是不同属性。
刚好等于门槛的值,例如 5;它能检验 > 与 >= 的区别。
Explore further
正文代码可以直接复制。先确认脚本类型、放置位置,以及这段代码是完整版本还是小实验;不要把同一脚本的多个版本叠加运行。界面参考图已标注来源,图中的对象名可能与本课不同,请以操作步骤为准。