循環練習 - 創建時間橋樑

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

這個項目是使用循環在實際方式中的另一個例子。對於這個橋樑,玩家將触摸一個按鈕以使橋樑在有限時間內走行,然後它就會消失。要創建計時器並向玩家顯示剩餘時間,您將使用循環。

設定項目

此橋樑可以包含任何移動基礎挑戰,例如障礙賽。

建立零件

  1. 在障礙賽中找到一個可以建造橋樑的地方,例如河流或大間隙。 創建三個 錨定 零件,例如下面。

    • 計時器顯示
    • 橋樑
    • 按鈕橋樑
  2. 當不未啟用時,橋樑將是半透明。若要啟用,請選擇 橋樑 並變更它的屬性。

    • 透明度 = 0.8
    • CanCollide = 假

創建計時器顯示

當穿過橋樑時,玩家需要看到橋樑消失前剩下的秒數。一種方法是將名為「表面使用者介面」的對象添加到零件。 表面使用者介面 也可以用來建立遊戲內標誌、自訂健康條和倉庫系統。此教學將在快速完成,但有關更多資

  1. 選擇 TimerDisplay 並添加一個 表面控制器 。然後,將其作為表面控制器的父級,添加一個 標籤

  2. 選擇表面使用者GUI。在屬性中,作出以下變更:

    • 變更 ,以便您可以看到玩家正在查看的時間標題。
  3. 選擇文字標籤。在屬性中,作出以下變更:

    • 大小 設為 {1, 0},{1, 0}
    • TextScaled 設置為 true。
    • 文字 設置為空。文字會使用指令碼更新。

設置指令碼

現在計時器已設空間,請創建一個指令來控制橋樑,並顯示倒數數字給玩家。

  1. 在橋樑部分中,添加名為 TimedBridge 的新指令碼。在指令碼中,創建以下變量。


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- 橋樑能持續使用的時間
    local timerDuration = 5

編寫觸摸互動

要使用橋樑,您需要創建兩個功能。一個功能會讓橋樑可以走行,並顯示計時器。另一個功能會偵測是否有玩家碰觸按鈕啟動橋樑。

  1. startTimer() 內建立一個名為 startTimer() 的新函數。您將使用 print statement 來測試您的代碼。


    local timerDuration = 5
    local function startTimer()
    print("Countdown started")
    end
  2. buttonPressed() 變更為 partTouched 以檢查是否有人形狀觸摸按鈕。 功能應接受 partTouched 參數,然後在 1> 有人形狀的情況下有空 if 語句。


    local function startTimer()
    print("Countdown started")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. 要啟動計時器,在 if 句中,呼叫 startTimer() 函數。


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. buttonPressed() 的結束時,連接按鈕的 buttonPressed() 事件到按鈕的 Touched 事件。


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. 執行項目。觸摸零件並在輸出窗口中檢查,以查看列印說明。

排障提示

如果橋樑無法正常運行,請從下方一個選項開始。

發出錯誤訊息說: 「... 不是有效的工作區成員」。

  • 在 TimedBridge 指令碼中,確認所有部分的名稱正確。 問題 : 無法看到零件。

  • 確認所有三個零件都錨定。

  • 檢查橋樑的透明度。

創建計時器

每次玩家踏上橋樑時,startTimer() 會使橋樑可行走,並啟動計時器。當計時器達到 0 時,橋樑將變成走路不行,因此任何速度不足的人都會掉跌落。

讓橋樑可行走

為了啟動,腳本將需要讓橋樑變得堅固,或可碰撞,然後開始計時器直到它變得不行走。

  1. 要使橋樑可行走,在 startTimer() 中,將橋樑的透明度屬性變更為 0 (opaque) 並將 CanCollide 屬性變更為 true。


    local function startTimer()
    -- 使橋樑可見、可走行
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. 要創建倒數計時器,請用以下值建立 for 陣列。

    • 控制變數 : 命名為 count ,設為 timerDuration
    • 結束 : 0
    • 增量 : -1

    local function startTimer()
    -- 使橋樑可見、可走行
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. 要將計時器顯示給玩家,請將文字變更為 timerText 以顯示伺服器的計時器。每次 for 循環結束時,都會顯示玩家所在的位置。


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. 使用 task.wait 函數來讓 for 循環執行只發生一次每秒。


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. 執行遊戲。當您觸摸按鈕時,橋樑應該出現,並且計時器將會啟動,然後完成。

防止橋樑從重新啟動

但是,如果您在按鈕上移動,計時器會一直重新啟動。

這是因為觸摸按鈕每次都會呼叫 for 循環,並且從開始 for 循環起始始終止。要保持計時器從一開始就不會重新啟動,你必須添加一個Boolean,類型的變數,這會控制是否允許 startTimer() 被稱為。 Booleans 與其他變數的寫法相同,但而不是使用數字或字串,它們只能設為真或假。在這個情況下,脚本會使用Boolean來檢查時計是否正在執行,然後才會執行。

  1. 在您的腳指令碼的上方,在您的變數下,創建一個名為 timerActive 的變數,並將其設為 false,因為還沒有人按下按鈕。


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. 要確認倒計時器只會在 timerActive Boolean 為 false 時啟動,請在 buttonPressed() 中的 if 條件中添加第二個條件。


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. 要在 startTimer() 到期前再次執行之前,將 timerActive 設置為 true。


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. startTimer() 函數中,在 之後 for 循環,將橋樑設置回原始狀態,並將橋樑的透明度變更為 0.8 並設置 CanCollide 為 false。


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- 從 timerDuration 開始倒計時的循環
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- 讓橋樑不能走行
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. 重設橋樑的最後一件事是將 timerText 變更為空字串,像原來一樣。然後將 timerActive 設定為 false。


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. 進行遊戲測試並確認橋樑可以多次使用。

完成時間橋樑指令碼


local bridge = script.Parent
-- 取得 Explorer 中輸入的按鈕
local button = workspace.ButtonBridge
-- 獲得顯示的零件
local timerPart = workspace.TimerDisplay
-- 取得會顯示計時器的文字
local timerText = timerPart.SurfaceGui.TextLabel
-- 玩家必須通過橋樑多久
local timerDuration = 5
local timerActive = false
local function startTimer()
print("Countdown started")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- 從 timerDuration 開始倒計時的循環
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- 讓橋樑不能走行
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("part touched")
if humanoid and timerActive == false then
print("starting timer")
startTimer()
end
end
button.Touched:Connect(buttonPressed)

摘要

可以將遊戲時間與不同的交互方式結合,以創造有趣的遊戲體驗。在此教學中,使用限定倒數橋樑來建立有趣的遊戲時間。在倒數結束時,玩家有限時獲得通過。