要練習循環,你會創造一個燈,燈會隨著時間的推移越來越亮。這個腳本可以應用於任何項目中的其他燈,例如街燈或發光的水晶。
設置零件和指令碼
燈將是個包含燈光和指令碼的零件。
為了讓更容易看到光,將遊戲世界變更為 夜晚 。在 Explorer > Lighting > 變更 ClockTime 為 0。
建立名為 Lamp 的新零件或模型。
選擇 燈 ,並添加一個 光,例如 點光源 或 2>聚光燈2>。你會使用燈的光強屬性來創建發光燈。
在燈中,添加名為 GlowScript 的新指令碼。在指令碼中,創建變數來存儲燈零件和點光。
local lightPart = script.Parentlocal light = lightPart.SpotLight接下來,創建一個變數來持有光的亮度每次循環執行時會變化的程度。然後,再添加一個變數來計算程度,在循環執行後再重新執行。
-- 燈光的亮度每次會改變多少local brightnessChange = 1-- 燈在秒鐘內會改變亮度幾何local timeChange = 1
製造泛光燈
燈會使用兩個 對循環使用 ,其中一個用來讓燈更亮,並且一個用來讓燈更暗。每個對循環的控制變量都有一個名為當前Brightness的控制變量。因此,當燈的控制變量上升和下降時,燈的亮度就會變化。
第一個輪圈 (光增加)
記住,for 循環會以關鍵字 for 與控制變量後開始。此腳本將設定燈光的亮度值為控制變量。
使用以下值來設定循環。記得使用分號分開控制變數和結束值。
- 控制變數 : currentBrightness
- 開始值 : 0
- 結束值 : 5
- 增量值 : brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doend在 for 範圍內,將光的亮度屬性設置為light.Brightness = currentBrightness。現在,當 for 範圍內運行時,光會變得更亮。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessend所以變更不發生得到一次,請使用 timeChange 中的值來添加等待功能。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end執行遊戲以看到每秒鐘光的增加。
如果您無法在第一個循環中看到亮度變化:
- 確認 light.Brightness = currentBrightness 在你的循環中的位置。
- 檢查 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 放置在 while 內,以便從 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 循環內重疊。當腡者添加更多循環時,請務必檢查寫入,以便讓代碼已讀得容易。