按钮可以由玩家使用来解锁新区域、给予积分并揭示宝藏。每当玩家触摸按钮时,它应该向玩家提供一些反馈,让玩家知道它正在与之交互,例如更改颜色或发出声音。
在这个例子中,按钮将用于激活桥。当按钮被按下时,它会变绿,玩家可以使用桥。如果玩家还没有按下按钮,他们在尝试走过桥时就会掉下去。
制作桥
首先设置桥。
在您的游戏中创建一个区域,玩家需要桥。
为桥创建零件,并将其重命名为桥。
在属性窗口中选择桥:
- 将 透明度 更改为 .5。对于透明度,0 可见,1 不可见。
- 检查 锚 。
- 卸下 可碰撞 。
测试游戏,桥应该是朦胧的,人们还不能在上面行走。
创建按钮
现在桥已设置,创建按钮。
- 创建一个名为 按钮 的新部件。
- 将按钮颜色更改为红色。
- 锚 按钮。
- 移动按钮以使其略微悬浮且不触碰任何东西。这是为了确保 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)