Para practicar los bucles for, crearás una lámpara que brilla gradualmente más y luego se atenúa con el tiempo. Este script se puede aplicar a cualquier otra luz en un proyecto, ya sea una farola o un cristal brillante.
Configura la parte y el script
La lámpara será una parte con una luz y un script adjuntos.
Para facilitar la visualización de la luz, cambia el mundo 3D a noche. En el Explorer ⟩ Lighting, cambia ClockTime a 0.

Crea una nueva parte o modelo llamado Lámpara.

Selecciona Lámpara y añade una luz, como una PointLight o SpotLight. Trabajarás con la propiedad de brillo de la luz para crear una lámpara brillante.

En Lámpara, añade un nuevo script llamado GlowScript. En ese script, crea variables para almacenar la parte de la lámpara y la luz puntual.
local lightPart = script.Parentlocal light = lightPart.SpotLightA continuación, crea una variable para almacenar cuánto cambiará el brillo de la luz cada vez que se ejecute el bucle. Luego, añade otra variable para cuántos segundos esperará el bucle antes de ejecutarse nuevamente.
-- Cuánto cambiará el brillo de la luz cada vezlocal brightnessChange = 1-- Con qué frecuencia en segundos cambiará el brillo la luzlocal timeChange = 1
Haz que la lámpara brille
La lámpara utilizará dos bucles for, uno que cuenta hacia arriba para hacer que la lámpara brille más, y otro que cuenta hacia abajo para atenuarla. Cada bucle for tendrá una variable de control llamada currentBrightness. De esa manera, a medida que la variable de control del bucle for sube y baja, también lo hará el brillo de la luz.
Primer bucle (aumento de luz)
Recuerda, un bucle for comienza con la palabra clave for seguida de una variable de control. Este script establecerá el valor de brillo de la luz al valor de la variable de control.
Codifica el bucle for utilizando los siguientes valores. Recuerda separar la variable de control y los valores finales con una coma.
- Variable de control: currentBrightness
- Valor inicial: 0
- Valor final: 5
- Valor de incremento: brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendEn el ámbito del bucle for, establece la propiedad de brillo de la luz al valor de la variable de control escribiendo light.Brightness = currentBrightness. Ahora, cuando se ejecute el bucle, la luz se volverá más brillante.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendPara que el cambio no ocurra todo de una vez, añade una función de espera utilizando el valor en timeChange.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEjecuta el juego para ver cómo la luz aumenta su brillo cada segundo.
Si no puedes ver el cambio de brillo con el tiempo en el primer bucle:
- Asegúrate de que light.Brightness = currentBrightness esté entre el do y el end de tu bucle for.
- Verifica que timeChange sea al menos 1 o más. Números más pequeños harán que el brillo cambie más rápido, pero será más difícil de ver con el tiempo.
- Asegúrate de que la primera línea de tu bucle for tenga dos comas en total separando la variable de control, el valor final y el valor de incremento.
Segundo bucle (disminución de luz)
Para atenuar la luz, utiliza un segundo bucle for. Los valores de este bucle estarán invertidos para que la luz comience brillante y cada segundo se vuelva más tenue.
Codifica un segundo bucle for que disminuya el brillo con el tiempo. La solución está en el cuadro de código a continuación. Utiliza los siguientes valores:
- Variable de control - currentBrightness configurada en 5, el final del último bucle.
- Final - 0, apagando la luz.
- Incremento - resta brightnessChange.
-- Segundo bucle atenúa la lámparafor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEjecuta tu juego; deberías ver la luz brillar y luego atenuarse.
Haz que la luz se repita
En este momento, la luz solo se enciende y apaga una vez. Para hacer que la lámpara brille continuamente, los bucles for se colocarán dentro de un bucle while que se repite.
Debajo de los bucles for, crea un nuevo bucle while.
while true doendColoca ambos bucles for dentro de un bucle while. Indenta los bucles for para que sea más fácil diferenciarlos del bucle while.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendEjecuta el juego para ver cómo la luz se vuelve brillante y tenue continuamente.
Script de luz terminado
Una versión terminada del script se puede consultar a continuación.
-- Almacena la luz adjunta a esta lámpara
lightPart = script.Parent
light = lightPart.SpotLight
-- Cuánto cambiará el brillo de la luz cada vez
local brightnessChange = 1
-- Con qué frecuencia en segundos cambiará el brillo la luz
local timeChange = 0.2
while true do
for count = 0, 5, brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
-- Segundo bucle para apagar la luz
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
endResumen
Para crear efectos complejos en un proyecto, los scripts pueden usar múltiples bucles, e incluso combinaciones de diferentes tipos de bucles. Para codificar una luz brillante, dos bucles están anidados dentro de un bucle while. A medida que los programadores añaden más bucles, asegúrate de verificar la indentación para que el código sea fácil de leer.