参数练习 - 按钮

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

按钮可以被玩家用来解锁新区域、获得积分和揭示宝藏。每当玩家触碰按钮时,它应该给出一些反馈,让玩家知道正在与之互动,比如改变颜色或发出声音。

在这个例子中,按钮将用于激活一座桥。当按钮被按下时,它将变为绿色,玩家将能够使用这座桥。如果玩家没有按下按钮,他们在尝试走上桥时将会掉下去。

创建一座桥

首先设置桥梁。

  1. 在你的环境中创建一个玩家需要桥梁的区域。

  2. 创建一个桥梁的部件并将其重命名为“Bridge”。

  3. 选择桥梁,在属性窗口中:

    • Transparency 改为 .5。对于透明度,0 是可见的,1 是不可见的。
    • 勾选 Anchor
    • 取消勾选 CanCollide
  4. 当你测试游戏时,桥应该看起来是朦胧的,人们还不能走上去。

创建按钮

现在桥梁已经设置好了,创建按钮。

  1. 创建一个名为 Button 的新部件。

  2. 将按钮颜色改为红色。

  3. Anchor 按钮。

  4. 移动按钮,使其稍微悬浮而不接触任何东西。这是为了确保 Touched 事件不会意外触发。

使按钮可交互

这次,不是使用 Touched 事件来创建一个陷阱,而是用它来创建一个使桥梁可用的按钮。为了使桥梁可碰撞,使用代码 bridge.CanCollide = true 在玩家触碰按钮时运行的自定义函数中。你知道完成以下步骤所需的一切。

在查看代码解决方案之前,尝试自己解决。

  1. 在按钮中插入一个名为 ActivateBridge 的新 script
  2. 删除 Hello World
  3. 为桥梁和按钮创建变量。
  4. 创建一个 local function,使按钮被触碰时执行以下操作:
    • 打印 "button touched"
    • 在被触碰时将按钮的颜色从红色改为绿色。
    • 将桥的透明度改为 0 以使其可见。
    • 通过使用代码 bridge.CanCollide = true 使桥可用。
  5. 将函数连接到按钮的 Touched 事件。
  6. 测试脚本,确保在按钮被触碰时桥出现。

代码解决方案 以下是一个可能的代码解决方案

-- 将此脚本插入按钮
-- 当某物触碰按钮时,将按钮变为绿色。
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("button touched")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)

排查代码问题

问题:游戏开始时桥已经是实心的。 确保部件被固定并且没有接触任何东西。部件可能会接触到某些东西,比如地形或另一个部件,从而导致 buttonPressed() 函数意外触发。

问题:你在输出窗口中收到错误:“Bridge is not a valid member of Workspace” 检查以下内容:

  • 桥的命名。脚本中的桥必须与资源管理器中的名称完全相同。
  • part.Touched:Connect(buttonPressed) 必须在 buttonPressed() 函数之外。

可选代码挑战

本课中的脚本也可以用来保持门关闭,以防止玩家进入特定区域。练习你的编码技能,完成以下任务:

  • 创建一个门部件。
  • 在离门更远的地方创建一个按钮。
  • 更改本课中的脚本,使其使门改变透明度,并使玩家无法与之碰撞。

你的版本可能看起来像这样:

local button = script.Parent
-- 提醒:将部件的名称 Gate 替换为你项目中的名称
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- 将按钮更改为红色以给玩家反馈
button.BrickColor = BrickColor.Red() -- 更改此处
-- 使门不可见
gate.Transparency = 1
-- 使玩家可以穿过门
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。