Para practicar los bucles, crearás una lámpara que gradualmente brillará más y luego se apagará con el tiempo. Este script se puede aplicar a cualquier otra luz en un proyecto, ya sea una luz de calle o un cristal brillante.
Configurando la Parte y el Script
La lámpara será una parte con una luz y un scriptadjuntos.
Para que sea más fácil ver la luz, cambia el mundo del juego a hora de la noche . En el Explorador > Iluminación > 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 del punto.
local lightPart = script.Parentlocal light = lightPart.SpotLightA continuación, crea una variable para guardar cuánto cambiará el brillo de la luz cada vez que se ejecute el bucle. Luego, añade otra variable por cuántos segundos esperarán los bucles antes de volver a ejecutarse.
-- Cuánto cambiará el brillo de la luz cada vezlocal brightnessChange = 1-- Con qué frecuencia en segundos la luz cambiará de brillolocal timeChange = 1
Haciendo que la lámpara brille
La lámpara usará dos para los bucles , uno que cuenta para hacer que la lámpara sea más brillante, y uno que cuenta hacia abajo para apagarla. Cada bucle tendrá una variable de control llamada currentBrightness. De esa manera, a medida que la variable de control del bucle sube y baja, también lo hará el brillo de la luz.
Primer bucle (incremento de luz)
Recuerda, un bucle de for comienza con la palabra clave for seguido de una variable de control. Este script establecerá el valor de brillo de la luz al valor en 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 ámbito del bucle for, configure la propiedad de brillo de la luz al valor de la variable de control escribiendo light.Brightness = currentBrightness. Ahora, cuando el bucle se ejecute, la luz se volverá más brillante.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendPara que el cambio no suceda todo a la vez, agregue una función de espera usando el valor de timeChange .
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEjecutar el juego para ver el aumento de brillo de la luz 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 hacer y el final de tu bucle for.
- Comprueba que timeChange sea al menos 1 o superior. Los 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 totales que separen la variable de control, el valor final y el valor de incremento.
Segundo bucle (decrecimiento de luz)
Para atenuar la luz, usa un segundo para el bucle. Los valores de este bucle se invertirán para que la luz comience a brillar y cada segundo, se vuelva más tenue.
Codifica un segundo para el bucle que disminuye 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 establecido a 5, el final del último bucle.
- Fin - 0, apagando la luz.
- Incremento - restar brightnessChange .
-- Lámpara tenue de segundo buclefor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endEjecuta tu juego; deberías ver que la luz se ilumina y luego se oscurece.
Haciendo que la luz se repita
En este momento, la luz solo se enciende y apaga una vez. Para que la lámpara brille continuamente encendida y desactivado, los bucles se colocarán dentro de un bucle mientras se repite.
Debajo de los bucles for, crea un nuevo bucle while.
while true doendColoca ambos bucles dentro de un bucle temporal. Indica los bucles para que sean más fáciles de distinguir del bucle temporal.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendEjecutar el juego para ver la luz se vuelve brillante y tenue continuamente.
Script de Luz Terminado
Se puede hacer referencia a una versión terminada del guión a continuación.
-- Almacena la luz conectada 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 la luz cambiará 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 usar múltiples bucles e incluso combinaciones de diferentes tipos de bucles. Para codificar una luz brillante, dos bucles se anidan dentro de un bucle temporal. A medida que los codificadores añaden más bucles, asegúrese de verificar la indentación para que el código sea fácil de leído.