按鈕可以被玩家用來解鎖新區域、給予分數和揭示寶藏。每當玩家觸碰按鈕時,應該給予一些反饋,讓玩家知道正在與之互動,例如改變顏色或發出聲音。
在這個例子中,按鈕將用來啟動一座橋樑。當按鈕被按下時,它會變成綠色,玩家將能夠使用這座橋樑。如果玩家沒有按下按鈕,當他們試圖走上橋樑時,將會掉下去。
建立橋樑
首先設置橋樑。
在你的環境中創建一個玩家需要橋樑的區域。
創建一個橋樑的部件並將其重命名為 Bridge。
選擇橋樑,在屬性窗口中:
- 將 Transparency 改為 .5。對於透明度,0 是可見的,1 是不可見的。
- 勾選 Anchor。
- 取消勾選 CanCollide。
當你測試遊戲時,橋樑應該看起來朦朧,並且人們還不能走上去。

創建按鈕
現在橋樑已經設置好了,創建按鈕。
創建一個名為 Button 的新部件。
將按鈕顏色改為紅色。
Anchor 按鈕。
移動按鈕,使其稍微懸浮而不接觸任何物體。這樣可以確保 Touched 事件不會意外觸發。

使按鈕可互動
這次,您將使用 Touched 事件來創建一個使橋樑可用的按鈕,而不是用來創建陷阱。要使橋樑可碰撞,請在玩家觸碰按鈕時運行的自定義函數中使用代碼 bridge.CanCollide = true。你知道完成以下步驟所需的一切。
在查看代碼解決方案之前,試著自己解決它。
- 在按鈕中插入一個名為 ActivateBridge 的新 script。
- 刪除 Hello World。
- 為橋樑和按鈕創建變量。
- 創建一個 local function,當按鈕被觸碰時執行以下操作:
- 打印 "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)故障排除你的代碼
問題:遊戲開始時橋樑已經是實心的。 確保部件是固定的並且不接觸任何物體。部件可能會接觸到某些東西,例如地形或另一個部件,並導致 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)