這個項目是使用循環在實際方式中的另一個例子。對於這個橋樑,玩家將触摸一個按鈕以使橋樑在有限時間內走行,然後它就會消失。要創建計時器並向玩家顯示剩餘時間,您將使用循環。
設定項目
此橋樑可以包含任何移動基礎挑戰,例如障礙賽。
建立零件
在障礙賽中找到一個可以建造橋樑的地方,例如河流或大間隙。 創建三個 錨定 零件,例如下面。
- 計時器顯示
- 橋樑
- 按鈕橋樑
當不未啟用時,橋樑將是半透明。若要啟用,請選擇 橋樑 並變更它的屬性。
- 透明度 = 0.8
- CanCollide = 假
創建計時器顯示
當穿過橋樑時,玩家需要看到橋樑消失前剩下的秒數。一種方法是將名為「表面使用者介面」的對象添加到零件。 表面使用者介面 也可以用來建立遊戲內標誌、自訂健康條和倉庫系統。此教學將在快速完成,但有關更多資
選擇 TimerDisplay 並添加一個 表面控制器 。然後,將其作為表面控制器的父級,添加一個 標籤 。
選擇表面使用者GUI。在屬性中,作出以下變更:
- 變更 面 ,以便您可以看到玩家正在查看的時間標題。
選擇文字標籤。在屬性中,作出以下變更:
- 將 大小 設為 {1, 0},{1, 0}。
- 將 TextScaled 設置為 true。
- 將 文字 設置為空。文字會使用指令碼更新。
設置指令碼
現在計時器已設空間,請創建一個指令來控制橋樑,並顯示倒數數字給玩家。
在橋樑部分中,添加名為 TimedBridge 的新指令碼。在指令碼中,創建以下變量。
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- 橋樑能持續使用的時間local timerDuration = 5
編寫觸摸互動
要使用橋樑,您需要創建兩個功能。一個功能會讓橋樑可以走行,並顯示計時器。另一個功能會偵測是否有玩家碰觸按鈕啟動橋樑。
在 startTimer() 內建立一個名為 startTimer() 的新函數。您將使用 print statement 來測試您的代碼。
local timerDuration = 5local function startTimer()print("Countdown started")end將 buttonPressed() 變更為 partTouched 以檢查是否有人形狀觸摸按鈕。 功能應接受 partTouched 參數,然後在 1> 有人形狀的情況下有空 if 語句。
local function startTimer()print("Countdown started")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendend要啟動計時器,在 if 句中,呼叫 startTimer() 函數。
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endend在 buttonPressed() 的結束時,連接按鈕的 buttonPressed() 事件到按鈕的 Touched 事件。
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)執行項目。觸摸零件並在輸出窗口中檢查,以查看列印說明。
排障提示
如果橋樑無法正常運行,請從下方一個選項開始。
發出錯誤訊息說: 「... 不是有效的工作區成員」。
在 TimedBridge 指令碼中,確認所有部分的名稱正確。 問題 : 無法看到零件。
確認所有三個零件都錨定。
檢查橋樑的透明度。
創建計時器
每次玩家踏上橋樑時,startTimer() 會使橋樑可行走,並啟動計時器。當計時器達到 0 時,橋樑將變成走路不行,因此任何速度不足的人都會掉跌落。
讓橋樑可行走
為了啟動,腳本將需要讓橋樑變得堅固,或可碰撞,然後開始計時器直到它變得不行走。
要使橋樑可行走,在 startTimer() 中,將橋樑的透明度屬性變更為 0 (opaque) 並將 CanCollide 屬性變更為 true。
local function startTimer()-- 使橋樑可見、可走行bridge.Transparency = 0bridge.CanCollide = trueend要創建倒數計時器,請用以下值建立 for 陣列。
- 控制變數 : 命名為 count ,設為 timerDuration 。
- 結束 : 0
- 增量 : -1
local function startTimer()-- 使橋樑可見、可走行bridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendend要將計時器顯示給玩家,請將文字變更為 timerText 以顯示伺服器的計時器。每次 for 循環結束時,都會顯示玩家所在的位置。
for count = timerDuration, 0, -1 dotimerText.Text = countend使用 task.wait 函數來讓 for 循環執行只發生一次每秒。
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end執行遊戲。當您觸摸按鈕時,橋樑應該出現,並且計時器將會啟動,然後完成。
防止橋樑從重新啟動
但是,如果您在按鈕上移動,計時器會一直重新啟動。
這是因為觸摸按鈕每次都會呼叫 for 循環,並且從開始 for 循環起始始終止。要保持計時器從一開始就不會重新啟動,你必須添加一個Boolean,類型的變數,這會控制是否允許 startTimer() 被稱為。 Booleans 與其他變數的寫法相同,但而不是使用數字或字串,它們只能設為真或假。在這個情況下,脚本會使用Boolean來檢查時計是否正在執行,然後才會執行。
在您的腳指令碼的上方,在您的變數下,創建一個名為 timerActive 的變數,並將其設為 false,因為還沒有人按下按鈕。
local timerDuration = 5local timerActive = falselocal function startTimer()要確認倒計時器只會在 timerActive Boolean 為 false 時啟動,請在 buttonPressed() 中的 if 條件中添加第二個條件。
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endend要在 startTimer() 到期前再次執行之前,將 timerActive 設置為 true。
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true在 startTimer() 函數中,在 之後 for 循環,將橋樑設置回原始狀態,並將橋樑的透明度變更為 0.8 並設置 CanCollide 為 false。
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- 從 timerDuration 開始倒計時的循環for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- 讓橋樑不能走行bridge.Transparency = 0.8bridge.CanCollide = falseend重設橋樑的最後一件事是將 timerText 變更為空字串,像原來一樣。然後將 timerActive 設定為 false。
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = false進行遊戲測試並確認橋樑可以多次使用。
完成時間橋樑指令碼
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)
摘要
可以將遊戲時間與不同的交互方式結合,以創造有趣的遊戲體驗。在此教學中,使用限定倒數橋樑來建立有趣的遊戲時間。在倒數結束時,玩家有限時獲得通過。