參數練習 - 按鈕

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

按鈕可以被玩家用來解鎖新區域、獲得分數和揭示寶藏。每當玩家接觸到按鈕時,它應該給予一些反饋,讓玩家知道正在與之互動,比如改變顏色或發出聲音。

在這個示例中,按鈕將用來激活一座橋樑。當按鈕被按下後,它將變為綠色,玩家將能夠使用這座橋樑。如果玩家未按下按鈕,當他們嘗試走上橋時,將會掉落到橋下。

建造一座橋

首先設置橋樑。

  1. 在您的環境中創建一個玩家需要橋樑的區域。

  2. 創建一個橋樑的部件並將其重命名為「橋」。

  3. 選擇橋,在屬性窗口中:

    • Transparency 更改為 0.5。對於透明度,0 表示可見,1 表示不可見。
    • 勾選 Anchor
    • 取消勾選 CanCollide
  4. 當您測試體驗時,橋應該看起來霧蒙蒙的,並且人們不應該能夠走上去。

創建按鈕

現在橋樑設置好了,創建按鈕。

  1. 創建一個新的部件並命名為 按鈕

  2. 將按鈕的顏色更改為紅色。

  3. 固定 按鈕。

  4. 將按鈕移動,使其稍微懸空而不接觸任何東西。這樣可以確保 Touched 事件不會意外觸發。

使按鈕互動

這一次,您將不再使用 Touched 事件來創建陷阱,而是用它來創建一個使橋樑可用的按鈕。為了使橋樑能夠碰撞,請在當玩家觸碰按鈕時運行的自定義函數中使用代碼 bridge.CanCollide = true。您已經知道完成以下步驟所需的所有其他內容。

在查看代碼解決方案之前,先試著自己解決它。

  1. 在按鈕中插入一個新的 腳本,命名為 ActivateBridge
  2. 刪除 Hello World
  3. 為橋和按鈕創建變量。
  4. 創建一個 本地函數,當按鈕被觸碰時執行以下操作:
    • 打印 "button touched"
    • 當被觸碰時將按鈕的顏色從紅色改為綠色。
    • 將橋的透明度改為 0 以使其可見。
    • 使橋可用,使用代碼 bridge.CanCollide = true
  5. 將該函數連接到按鈕的 Touched 事件。
  6. 測試腳本並確保按鈕被觸碰時橋顯示出來。

代碼解決方案 下面是可能的代碼解決方案


-- 將此腳本插入按鈕中
-- 當有東西觸碰按鈕時使按鈕變為綠色。
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)
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。