消失陷阱

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

致命熔岩 中,您學會了如何根據用戶行為觸發代碼。本教程將向您展示如何製作一個當用戶踩上去時會逐漸消失的平台。

設置

如果您遵循了 致命熔岩,您可以將消失平台放置在用戶無法跳過的熔岩地面上方。

  1. 插入一個部件並將其移動到您的世界中。將其命名為 FadingPlatform

  2. 調整大小,以便用戶可以跳上去。

  3. 確保它是 固定的

  4. 在部件中插入一個 腳本,將其重命名為 FadeOnTouch,並刪除默認代碼。

  5. 為平台創建一個變量,並創建一個與平台的 Touched 事件連接的空函數。

    local platform = script.Parent
    local function fade()
    end
    platform.Touched:Connect(fade)

使平台消失

讓平台瞬間消失會非常無趣,因為用戶會發現無法跨越這個空隙。相反,平台應該在用戶掉下去之前 逐漸消失,以給他們一個跳下去的機會。

您可以不斷改變 Transparency 屬性並等待非常短的時間來獲得這個效果,但逐漸消失需要至少 10 次在 0 和 1 之間的變化。這樣會產生 20 行非常重複的代碼。

這可以通過使用 for 循環更有效地實現,該循環會重複特定次數的代碼。每次循環的代碼稱為 迭代。for 循環由三個部分定義,並用逗號分隔:

  • 控制變量 - 創建並用於計數循環的變量。在這個例子中,它是 count,起始值為 1。
  • 結束值 - 循環停止的值。在這個例子中,它是 10。
  • 步進增量
    可選
    - 確定每次循環要添加到控制變量的值。如果省略,默認為 1,因此在這個例子中是多餘的。

FadeOnTouch 中:

  1. 在函數中,創建一個從 1 開始的 for 循環,迭代 10 次。

  2. 在 for 循環內,將 Transparency 屬性設置為控制變量除以 10

  3. 使用 task.wait() 函數調用等待時間 0.1

    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    end
    platform.Touched:Connect(fade)

當循環運行時,count 在每次迭代中增加 1。這意味著平台的 Transparency 每 0.1 秒增加 0.1,並在 1 秒後達到完全透明。

重新出現

在平台消失後,用戶應該會掉下去。平台應該在消失幾秒後重新出現,否則如果用戶失敗,他們將永遠無法再次嘗試跳躍。CanCollide 屬性控制用戶是否可以穿過一個部件。

  1. 在 for 循環後將平台的 CanCollide 屬性設置為 false

  2. 使用 task.wait() 函數等待幾秒鐘。

  3. CanCollide 屬性設置回 true

  4. Transparency 屬性設置回 0

    local platform = script.Parent
    local function fade()
    for count = 1, 10 do
    platform.Transparency = count / 10
    task.wait(0.1)
    end
    platform.CanCollide = false
    task.wait(3)
    platform.CanCollide = true
    platform.Transparency = 0
    end
    platform.Touched:Connect(fade)

防抖變量

致命熔岩 中,您學會了 Touched 事件在用戶的身體部位與部件接觸時每次都會運行。這種行為在用戶跑過消失平台時會造成問題:函數將多次運行,每次都重置循環。

為了使代碼正常工作,函數應該僅在用戶第一次觸摸平台時運行一次。確保某個動作僅在本應多次觸發時觸發一次被稱為 防抖

要防抖一個函數,可以使用一個 布林值 變量來跟踪平台是否已經被觸摸。布林值只能包含 truefalse 值。創建一個名為 isTouched 的變量並將其設置為 false

local platform = script.Parent
local isTouched = false
local function fade()
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
platform.Touched:Connect(fade)

檢查變量

可以使用 if 語句僅在 isTouched 防抖變量為 false 時運行 fade 函數中的代碼。將 fade 函數的主體包裹在一個 if 語句中,條件為 not isTouched

local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
end
end
platform.Touched:Connect(fade)

Luau 的 not 運算符會反轉其後的值。在條件語句中,這意味著第一個 if 語句的行為與後面的語句相同。

if not isTouched then
end
if isTouched == false then
end
if isTouched == nil then
end

切換防抖

目前,fade 函數中的代碼將始終運行,因為 isTouched 為 false,not isTouched 評估為 true。要完成防抖例程,您需要在兩個地方切換變量的值。

  1. 在 if 語句內部,將 isTouched 設置為 true,在平台開始消失之前。
  2. 在平台重新出現後將其設置回 false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)

就這樣!現在測試您的代碼,您應該會發現當用戶跳上去時平台會消失,幾秒鐘後又會重新出現。

您可以在更寬的空隙中複製這個平台,以創建一個具有挑戰性的障礙,並改變它們消失的速度以平衡難度。

最終代碼

local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
for count = 1, 10 do
platform.Transparency = count / 10
task.wait(0.1)
end
platform.CanCollide = false
task.wait(3)
platform.CanCollide = true
platform.Transparency = 0
isTouched = false
end
end
platform.Touched:Connect(fade)
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。