若要練習循環,您將創建一盏燈,逐漸變亮,然後隨著時間過去而變暗。此腳本之後可應用於項目中的任何其他燈光,無論是街燈或發光水晶。
設定零件和腳指令碼
燈將是附有燈光和腳指令碼的一部分。
為了讓看到光更容易,將遊戲世界變更為 夜晚時間 。在 Explorer > 燈光 > 變更 時間表 為 0。
創建名為燈的新零件或模型。
選擇燈,並添加 光 ,例如點光源或聚光燈。您將使用光的亮度屬性來創建發光的燈。
在燈中,添加名為 GlowScript 的新腳本。在該指令碼中,創建變量來儲存燈部分和點光源。
local lightPart = script.Parentlocal light = lightPart.SpotLight接下來,創建一個變量來保存燈光亮度每次循環運行時會改變多少。然後,添加另一個變量,告訴循環在何時需要等待多少秒才能再次運行。
-- 光的亮度每次會改變多少local brightnessChange = 1-- 燈光在秒鐘內多久會變亮local timeChange = 1
讓燈光亮起
燈將使用兩個 循環 , 一個用於使燈更亮, 一個用於使燈變暗。每個循環將有一個控制變量稱為當前亮度。這樣,隨著控制變量的上下波動,光的亮度也會上下波動。
第一循環(光增加)
記住,for迴圈以for關鍵字開始,然後跟隨控制變量。此腳本將將光的亮度值設為控制變量的值。
使用以下值編寫 for 循環。記得用逗號將控制變量和結束值分開。
- 控制變量 :currentBrightness
- 起始值 : 0
- 結束值 :5
- 增量值 :brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doend在 for 循環的範圍內,將光的亮度屬性設為控制變量中的值,輸入 light.Brightness = currentBrightness 。現在,當迴圈運行時,燈光會變得更亮。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessend因此變更不會一次發生,請使用 timeChange 中的值來添加等待功能。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end執行遊戲以查看光源每秒鐘的亮度增加。
如果你無法在第一個循環中看到亮度隨時間變化:
- 請確保 light.Brightness = currentBrightness 在你的 for 循環的開始和結束之間。
- 檢查 timeChange 至少是 1 或更高。較小的數字會使亮度更快地變化,但隨著時間過去會變得更難看。
- 請確保你的for迴圈的第一行有兩個總分隔符分開控制變量、終值和增量值。
第二循環 (光減少)
要減弱光亮,使用第二個循環。這個循環的值將被反轉,使光亮起來,每秒鐘變得更暗。
寫一個第二個循環,會隨著時間的推移降低亮度。解決方案在下方的代碼盒中。使用以下值:
- 控制變量 - currentBrightness 設為 5,最後循環的結束
- 結束 - 0,關閉燈光。
- 增加 - 減去 brightnessChange。
-- 第二循環減光燈for currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end執行您的遊戲;您應該看到光亮度提升,然後降低。
讓光重複
目前,燈只能打開和關閉一次。要使燈始終保持亮起和關閉,循環將被放置在重複的循環中。
在 for 循環下,創建一個新的 while 循環。
while true doend將兩個循環放置在 while 循環內。將 for 循環進行indent,以便它們更容易與 while 循環區分。
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endend執行遊戲以查看燈光會持續亮起和昏暗不停地轉換。
完成了輕型腳指令碼
完成的腳本版本可以在下面參考。
-- 儲存附在這燈上的光lightPart = script.Parentlight = lightPart.SpotLight-- 光的亮度每次會改變多少local brightnessChange = 1-- 燈光在秒鐘內多久會變亮local timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- 第二個循環關閉燈光for count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
總結
要在項目中創建複雜的效果,腳本可以使用多個循環和甚至不同類型的循環組合。要編寫發光的燈光,兩個循環被嵌套在 while 循環中。隨著程式員添加更多循環,請務必檢查引用符,以便代碼易於已讀。