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 puede aplicarse a otras luces 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á la luz de brillolocal timeChange = 1
Haz que la lámpara brille
La lámpara usará 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. Así, 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 que 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 usando 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 alcance 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 wait utilizando el valor en timeChange.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEjecuta la experiencia 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án más difíciles 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 oscurezca.
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. Usa los siguientes valores:
- Variable de control - currentBrightness configurada a 5, el final del último bucle.
- Fin - 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 experiencia; deberías ver cómo la luz brilla y luego se atenúa.
Haz que la luz se repita
Ahora mismo, 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.
Bajo los bucles for, crea un nuevo bucle while.
while true doendColoca ambos bucles for dentro de un bucle while. Sangra los bucles for para hacerlos más fáciles de diferenciar 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 la experiencia para ver cómo la luz se vuelve brillante y se atenúa continuamente.
Script de luz terminado
Una versión terminada del script se puede consultar a continuación.
-- Almacena la luz adjunta a esta lámparalightPart = script.Parentlight = lightPart.SpotLight-- Cuánto cambiará el brillo de la luz cada vezlocal brightnessChange = 1-- Con qué frecuencia en segundos cambiará la luz de brillolocal timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- Segundo bucle para apagar la luzfor count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
Resumen
Para crear efectos complejos en un proyecto, los scripts pueden utilizar 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 comprobar la sangría para que el código sea fácil de leer.