Per esercitarti con i cicli for, creerai una lampada che si illumina gradualmente e poi si attenua nel tempo. Questo script può poi essere applicato a qualsiasi altra luce in un progetto, che si tratti di un lampione o di un cristallo fluorescenti.
Imposta la parte e lo script
La lampada sarà una parte con una luce e uno script allegati.
Per rendere più facile vedere la luce, cambia il mondo 3D in notte. In Explorer ⟩ Lighting, cambia ClockTime in 0.

Crea una nuova parte o modello chiamato Lamp.

Seleziona Lamp e aggiungi una luce, come PointLight o SpotLight. Lavorerai con la proprietà di luminosità della luce per creare una lampada luminosa.

In Lamp, aggiungi un nuovo script chiamato GlowScript. In quello script, crea variabili per memorizzare la parte della lampada e la luce puntiforme.
local lightPart = script.Parentlocal light = lightPart.SpotLightSuccessivamente, crea una variabile per contenere quanto la luminosità della luce cambierà ogni volta che il ciclo viene eseguito. Poi, aggiungi un’altra variabile per quanto secondi i cicli aspetteranno prima di eseguire di nuovo.
-- Quanto cambierà la luminosità della luce ogni voltalocal brightnessChange = 1-- Quanto spesso in secondi la luce cambierà luminositàlocal timeChange = 1
Fai brillare la lampada
La lampada utilizzerà due cicli for, uno che conta per rendere la lampada più luminosa e uno che conta per attenuarla. Ogni ciclo for avrà una variabile di controllo chiamata currentBrightness. In questo modo, man mano che la variabile di controllo del ciclo for aumenta e diminuisce, così farà anche la luminosità della luce.
Primo ciclo (aumento della luce)
Ricorda, un ciclo for inizia con la parola chiave for seguita da una variabile di controllo. Questo script imposterà il valore di luminosità della luce al valore della variabile di controllo.
Codifica il ciclo for utilizzando i seguenti valori. Ricorda di separare la variabile di controllo e i valori finali con una virgola.
- Variabile di controllo: currentBrightness
- Valore iniziale: 0
- Valore finale: 5
- Valore di incremento: brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendNel contesto del ciclo for, imposta la proprietà di luminosità della luce al valore della variabile di controllo digitando light.Brightness = currentBrightness. Ora, quando il ciclo verrà eseguito, la luce diventerà più luminosa.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendAffinché il cambiamento non avvenga tutto in una volta, aggiungi una funzione di attesa utilizzando il valore di timeChange.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEsegui l'esperienza per vedere la luce aumentare di luminosità ogni secondo.
Se non riesci a vedere il cambiamento di luminosità nel primo ciclo:
- Assicurati che light.Brightness = currentBrightness sia compreso tra do e end del tuo ciclo for.
- Controlla che timeChange sia almeno 1 o più. Numeri più piccoli faranno cambiare la luminosità più rapidamente, ma sarà più difficile da vedere nel tempo.
- Assicurati che la prima riga del tuo ciclo for abbia due virgole totali che separano la variabile di controllo, il valore finale e il valore di incremento.
Secondo ciclo (diminuzione della luce)
Per attenuare la luce, utilizza un secondo ciclo for. I valori di questo ciclo saranno invertiti in modo che la luce inizi a brillare e ogni secondo diventi più debole.
Codifica un secondo ciclo for che diminuisce la luminosità nel tempo. La soluzione si trova nel riquadro di codice sottostante. Usa i seguenti valori:
- Variabile di controllo - currentBrightness impostata a 5, la fine dell'ultimo ciclo.
- Fine - 0, spegnendo la luce.
- Incremento - sottrai brightnessChange.
-- Secondo ciclo che attenua la lampadafor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEsegui la tua esperienza; dovresti vedere la luce brillare e poi attenuarsi.
Fai ripetere la luce
Al momento, la luce si accende e si spegne solo una volta. Per fare in modo che la lampada continui a brillare e spegnersi, i cicli for saranno inseriti all'interno di un ciclo while ripetuto.
Sotto i cicli for, crea un nuovo ciclo while.
while true doendPosiziona entrambi i cicli for all'interno di un ciclo while. Indenta i cicli for per facilitarne la distinzione dal ciclo while.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendEsegui l'esperienza per vedere la luce diventare luminosa e attenuarsi continuamente.
Script della luce finito
Una versione finale dello script può essere consultata qui sotto.
-- Memorizza la luce attaccata a questa lampadalightPart = script.Parentlight = lightPart.SpotLight-- Quanto cambierà la luminosità della luce ogni voltalocal brightnessChange = 1-- Quanto spesso in secondi la luce cambierà luminositàlocal timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- Secondo ciclo per spegnere la lucefor count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
Riepilogo
Per creare effetti complessi in un progetto, gli script possono utilizzare più cicli ed anche combinazioni di diversi tipi di cicli. Per codificare una luce fluorescente, due cicli sono nidificati all'interno di un ciclo while. Man mano che i programmatori aggiungono più cicli, assicurati di controllare l'indentazione in modo che il codice possa essere facile da leggere.