按钮可以被玩家用来解锁新区域、提供点数和显示宝藏。每当玩家触摸按钮时,它们都应该给予一些反馈,让玩家知道它们正在与之交互,例如更改颜色或发出声音。
在这个示例中,按钮将用于激活桥。当按钮被按下时,它将变绿,玩家可以使用桥。如果玩家未按下按钮,他们将在试图走过它时掉落通过桥。
制作桥
从设置桥梁开始。
在您的游戏中创建一个区域,玩家将需要一个桥。
创建一个部分为桥梁,并将其重命名为桥梁。
选择桥梁,在属性窗口中:
- 将 透明度 修改为 .5。 对于透明度,0 是可见的,1 是隐藏的。
- 检查 锚定 。
- 未选择 可能碰撞 。
测试游戏,桥梁应该看起来迷雾,人们还不能走上它。
创建按钮
现在桥已设置,创建按钮。
- 创建一个名为 按钮 的新部分。
- 将按钮颜色改为红色。
- 锚定按钮。 4. 将按钮移动到悬浮在空中,不碰触任何东西。这是为了确保 Touched 事件不会意外地发触发。
让按钮互动
这次,而不是使用 Touched 事件创建陷阱,您将使用它来创建使桥梁可用的按钮。要使桥梁可用,请使用 bridge.CanCollide = true 在自定义函数中使用。您知道您需要完成以下步骤。
尽量在看代码解决方案之前自己弄清楚。
- 将一个新的 脚本 插入名为 ActivateBridge 的按钮。
- 删除 Hello World 。
- 为桥梁和按钮创建变量。
- 创建一个 本地函数 ,该按钮触摸到:
- 打印"button touched"。
- 当触摸时,按钮的颜色从红色变为绿色。
- 将桥梁透明度调整为 0 以使其可见。
- 使用代码 bridge.CanCollide = true 使桥梁可用
- 将函数连接到按钮的 Touched 事件。
- 测试脚本,确保桥梁在按钮触摸时出现。
以下是一个可能的代码解决方案
-- 将此脚本插入按钮
-- 当有东西触摸按钮时,按钮变成绿色。
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)
解决您的代码
问题:桥梁已经结实当游戏开始时。 确保零件牢固,不要碰到任何东西。零件可能会碰到某些东西,例如地形或其他部分,并且会导致按钮Pressed() 按钮意外地触发。 问题:您在输出窗口中获得一个错误,说“桥梁不是工作区的有效成员” 检查以下内容:
- 为你的桥梁命名。你脚本中的桥梁必须以正确的方式命名,就像在 Explorer 中一样。
- 那个 part.Touched:Connect(buttonPressed) 在 buttonPressed() 函数外。
可选的代码挑战
这个脚本在这个课程中也可以用来让玩家离开特定区域。 练习你的编程技能,然后执行以关注中/正在关注操作:
- 创建门部件。
- 创建一个按钮,离门更远。
- 改变这个脚本以便使门变得透明,玩家无法与它碰撞。
您的版本可能看起来像这样:
local button = script.Parent
-- 提示:将零件、大门的名称更改为您的项目中的
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)