参数练习 - 按钮

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

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

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

创建一座桥

首先设置桥。

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

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

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

    • 透明度更改为0.5。对于透明度,0是可见的,1是不可见的。
    • 勾选锚定
    • 取消勾选可以碰撞
  4. 当你测试体验时,桥应该看起来朦胧,玩家还不能在上面行走。

创建按钮

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

  1. 创建一个名为_按钮_的新部件。

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

  3. 锚定按钮。

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

使按钮具有交互性

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

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

  1. 在按钮中插入一个名为_激活桥_的新脚本
  2. 删除你好,世界
  3. 为桥和按钮创建变量。
  4. 创建一个本地函数,当按钮被触碰时执行以下操作:
    • 打印"按钮被触碰"
    • 当被触碰时,将按钮的颜色从红色更改为绿色。
    • 将桥的透明度更改为0,以使其可见。
    • 通过使用代码bridge.CanCollide = true使桥可用。
  5. 将该函数连接到按钮的触碰事件。
  6. 测试脚本,确保按钮被触碰时桥会出现。

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


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

排查代码问题

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

问题:你在输出窗口中收到错误,提示:“桥不是工作区的有效成员” 检查以下内容:

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

可选代码挑战

本课中的脚本也可以用来让门阻止玩家进入特定区域。锻炼你的编码技能并执行以下操作:

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

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


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