使用迴圈發光的燈

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

若要練習循環,您將創建一盏燈,逐漸變亮,然後隨著時間過去而變暗。此腳本之後可應用於項目中的任何其他燈光,無論是街燈或發光水晶。

設定零件和腳指令碼

燈將是附有燈光和腳指令碼的一部分。

  1. 為了讓看到光更容易,將遊戲世界變更為 夜晚時間 。在 Explorer > 燈光 > 變更 時間表 為 0。

    image
  2. 創建名為燈的新零件或模型。

  3. 選擇燈,並添加 ,例如點光源或聚光燈。您將使用光的亮度屬性來創建發光的燈。

  4. 在燈中,添加名為 GlowScript 的新腳本。在該指令碼中,創建變量來儲存燈部分和點光源。


    local lightPart = script.Parent
    local light = lightPart.SpotLight
  5. 接下來,創建一個變量來保存燈光亮度每次循環運行時會改變多少。然後,添加另一個變量,告訴循環在何時需要等待多少秒才能再次運行。


    -- 光的亮度每次會改變多少
    local brightnessChange = 1
    -- 燈光在秒鐘內多久會變亮
    local timeChange = 1

讓燈光亮起

燈將使用兩個 循環 , 一個用於使燈更亮, 一個用於使燈變暗。每個循環將有一個控制變量稱為當前亮度。這樣,隨著控制變量的上下波動,光的亮度也會上下波動。

第一循環(光增加)

記住,for迴圈以for關鍵字開始,然後跟隨控制變量。此腳本將將光的亮度值設為控制變量的值。

  1. 使用以下值編寫 for 循環。記得用逗號將控制變量和結束值分開。

    • 控制變量currentBrightness
    • 起始值 : 0
    • 結束值 :5
    • 增量值brightnessChange

    local timeChange = 1
    for currentBrightness = 0, 5, brightnessChange do
    end
  2. 在 for 循環的範圍內,將光的亮度屬性設為控制變量中的值,輸入 light.Brightness = currentBrightness 。現在,當迴圈運行時,燈光會變得更亮。


    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    end
  3. 因此變更不會一次發生,請使用 timeChange 中的值來添加等待功能。


    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  4. 執行遊戲以查看光源每秒鐘的亮度增加。

如果你無法在第一個循環中看到亮度隨時間變化:

  • 請確保 light.Brightness = currentBrightness 在你的 for 循環的開始和結束之間。
  • 檢查 timeChange 至少是 1 或更高。較小的數字會使亮度更快地變化,但隨著時間過去會變得更難看。
  • 請確保你的for迴圈的第一行有兩個總分隔符分開控制變量、終值和增量值。

第二循環 (光減少)

要減弱光亮,使用第二個循環。這個循環的值將被反轉,使光亮起來,每秒鐘變得更暗。

  1. 寫一個第二個循環,會隨著時間的推移降低亮度。解決方案在下方的代碼盒中。使用以下值:

    • 控制變量 - currentBrightness 設為 5,最後循環的結束
    • 結束 - 0,關閉燈光。
    • 增加 - 減去 brightnessChange

    -- 第二循環減光燈
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  2. 執行您的遊戲;您應該看到光亮度提升,然後降低。

讓光重複

目前,燈只能打開和關閉一次。要使燈始終保持亮起和關閉,循環將被放置在重複的循環中。

  1. 在 for 循環下,創建一個新的 while 循環。


    while true do
    end
  2. 將兩個循環放置在 while 循環內。將 for 循環進行indent,以便它們更容易與 while 循環區分。


    while true do
    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
    end
  3. 執行遊戲以查看燈光會持續亮起和昏暗不停地轉換。

完成了輕型腳指令碼

完成的腳本版本可以在下面參考。


-- 儲存附在這燈上的光
lightPart = script.Parent
light = lightPart.SpotLight
-- 光的亮度每次會改變多少
local brightnessChange = 1
-- 燈光在秒鐘內多久會變亮
local timeChange = 0.2
while true do
for count = 0, 5, brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
-- 第二個循環關閉燈光
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
end

總結

要在項目中創建複雜的效果,腳本可以使用多個循環和甚至不同類型的循環組合。要編寫發光的燈光,兩個循環被嵌套在 while 循環中。隨著程式員添加更多循環,請務必檢查引用符,以便代碼易於已讀。