Per esercitarti con i cicli for, creerai una lampada che si illumina gradualmente e poi si affievolisce nel tempo. Questo script può poi essere applicato a qualsiasi altra luce in un progetto, sia essa un lampione o un cristallo luminoso.
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 una 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 cambierà la luminosità della luce ogni volta che il ciclo viene eseguito. Poi, aggiungi un'altra variabile per quanti secondi i cicli attenderanno 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 affievolirla. Ogni ciclo for avrà una variabile di controllo chiamata currentBrightness. In questo modo, mentre la variabile di controllo del ciclo for sale e scende, 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 nella 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 nella variabile di controllo digitando light.Brightness = currentBrightness. Ora, quando il ciclo viene 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 in timeChange.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEsegui il gioco per vedere la luce aumentare di luminosità ogni secondo.
Se non riesci a vedere il cambiamento di luminosità nel tempo nel primo ciclo:
- Assicurati che light.Brightness = currentBrightness sia tra il do e l'end del tuo ciclo for.
- Controlla che timeChange sia almeno 1 o superiore. Numeri più piccoli faranno cambiare la luminosità più velocemente, 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 affievolire la luce, utilizza un secondo ciclo for. I valori di questo ciclo saranno invertiti in modo che la luce inizi luminosa e ogni secondo diventi più debole.
Codifica un secondo ciclo for che diminuisce la luminosità nel tempo. La soluzione è nel riquadro di codice qui sotto. 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 per affievolire la lampadafor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEsegui il tuo gioco; dovresti vedere la luce illuminarsi e poi affievolirsi.
Fai ripetere la luce
In questo momento, la luce si accende e si spegne solo una volta. Per far sì che la lampada brilli continuamente accendendosi e spegnendosi, i cicli for saranno posti 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 renderli più facili da distinguere 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 il gioco per vedere la luce diventare brillante e affievolirsi continuamente.
Script della luce finito
Una versione finita dello script può essere consultata qui sotto.
-- Memorizza la luce attaccata a questa lampada
lightPart = script.Parent
light = lightPart.SpotLight
-- Quanto cambierà la luminosità della luce ogni volta
local brightnessChange = 1
-- Quanto spesso in secondi la luce cambierà luminosità
local timeChange = 0.2
while true do
for count = 0, 5, brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
-- Secondo ciclo per spegnere la luce
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
endRiepilogo
Per creare effetti complessi in un progetto, gli script possono utilizzare più cicli e persino combinazioni di diversi tipi di cicli. Per codificare una luce fluorescente, due cicli sono annidati 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.