按鈕可以被玩家用來解鎖新區域、獲得分數和揭示寶藏。每當玩家接觸到按鈕時,它應該給予一些反饋,讓玩家知道正在與之互動,比如改變顏色或發出聲音。
在這個示例中,按鈕將用來激活一座橋樑。當按鈕被按下後,它將變為綠色,玩家將能夠使用這座橋樑。如果玩家未按下按鈕,當他們嘗試走上橋時,將會掉落到橋下。
建造一座橋
首先設置橋樑。
在您的環境中創建一個玩家需要橋樑的區域。
創建一個橋樑的部件並將其重命名為「橋」。
選擇橋,在屬性窗口中:
- 將 Transparency 更改為 0.5。對於透明度,0 表示可見,1 表示不可見。
- 勾選 Anchor。
- 取消勾選 CanCollide。
當您測試體驗時,橋應該看起來霧蒙蒙的,並且人們不應該能夠走上去。

創建按鈕
現在橋樑設置好了,創建按鈕。
創建一個新的部件並命名為 按鈕。
將按鈕的顏色更改為紅色。
固定 按鈕。
將按鈕移動,使其稍微懸空而不接觸任何東西。這樣可以確保 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)
排查您的代碼
問題:當體驗開始時,橋已經是實心的。 確保部件是固定的並且不接觸任何東西。部件可能接觸到其他物體,例如地形或另一個部件,並導致 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)