Para praticar com loops, você criará uma lâmpada que gradualmente brilha mais e depois apaga ao longo do tempo.Este script pode então ser aplicado a qualquer outra luz em um projeto, seja uma lâmpada de rua ou um cristal brilhante.
Configure a parte e o script
A lâmpada será uma parte com uma luz e um script anexados.
Para facilitar para ver a luz, mude o mundo do jogo para noite . No Explorer > Iluminação > mude Hora do Relógio para 0.
Crie uma nova peça ou modelo chamado Lamp.
Selecione Lâmpada e adicione uma luz , como um PointLight ou SpotLight.Você vai trabalhar com a propriedade de brilho da luz para criar uma lâmpada brilhante.
Na Lamp, adicione um novo script chamado GlowScript. Nesse script, crie variáveis para armazenar a parte da lâmpada e a luz de ponto.
local lightPart = script.Parentlocal light = lightPart.SpotLightEm seguida, crie uma variável para armazenar quanto a brilho da luz mudará cada vez que o loop for executado.Então, adicione outra variável para quantos segundos os loops vão esperar antes de executar novamente.
-- Quanto a brilho da luz vai mudar cada vezlocal brightnessChange = 1-- Com que frequência em segundos a luz mudará de brilholocal timeChange = 1
Faça a lâmpada brilhar
A lâmpada usará dois para loops , um que conta para tornar a lâmpada mais brilhante e um que conta para diminuir a intensidade.Cada variável de loop terá uma variável de controle chamada currentBrightness.Dessa forma, à medida que a variável de controle do loop for aumenta e diminui, assim diminuirá a intensidade da luz.
Primeiro ciclo (aumento de luz)
Lembre-se, um ciclo for começa com a palavra-chave for seguida por uma variável de controle.Este script definirá o valor de brilho da luz para o valor na variável de controle.
Codifique o loop for usando os seguintes valores. Lembre-se de separar a variável de controle e os valores finais com um ponto-e-vírgula.
- Variável de controle : currentBrightness
- Início do valor : 0
- Valor de fim :5
- Valor de incremento : brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendNo escopo do loop for, defina a propriedade de brilho da luz para o valor na variável de controle digitando light.Brightness = currentBrightness.Agora, quando o ciclo for executado, a luz ficará mais brilhante.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendEntão a mudança não acontece de uma só vez, adicione uma função de espera usando o valor em timeChange .
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endExecute o jogo para ver o aumento da luz em brilho a cada segundo.
Se você não pode ver a mudança de brilho ao longo do tempo no primeiro loop:
- Certifique-se de que light.Brightness = currentBrightness esteja entre o início e o fim do seu loop for.
- Verifique se timeChange é pelo menos 1 ou superior. Números menores farão a mudança de brilho mais rápida, mas será mais difícil de ver ao longo do tempo.
- Certifique-se de que a primeira linha do seu loop for tenha dois vírgulas totais separando a variável de controle, o valor final e o valor de incremento.
Segundo ciclo (diminuição de luz)
Para diminuir a luz, use um segundo para ciclo. Os valores desse ciclo serão invertidos para que a luz comece brilhante e cada segundo, fique mais fraca.
Codifique um segundo para ciclo que diminua a brilho ao longo do tempo. A solução está na caixa de código abaixo. Use os seguintes valores:
- Variável de controle - currentBrightness definida como 5, o fim do último loop.
- Fim - 0, desligando a luz.
- Incremento - subtraia brightnessChange.
-- Lâmpada de segundo loop de dimensãofor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endExecute seu jogo; você deve ver a luz clarear e depois apagar.
Faça a luz se repetir
No momento, a luz só acende e desliga uma vez.Para fazer a lâmpada brilhar continuamente on e desligado, os loops de for serão colocados dentro de um ciclo while repetitivo.
Sob os loops for, crie um novo loop while.
while true doendColoque ambos para loops dentro de um ciclo while. Indente os ciclos for para torná-los mais fáceis de distinguir do ciclo while.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendExecute o jogo para ver a luz acender e apagar continuamente.
Script de luz script
Uma versão final do script pode ser referenciada abaixo.
-- Armazena a luz anexada a esta lâmpadalightPart = script.Parentlight = lightPart.SpotLight-- Quanto a brilho da luz vai mudar cada vezlocal brightnessChange = 1-- Com que frequência em segundos a luz mudará de brilholocal timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- Segundo ciclo para desligar a luzfor count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
Sumário
Para criar efeitos complexos em um projeto, scripts podem usar múltiplos loops e até mesmo combinações de diferentes tipos de loops.Para codificar uma luz brilhante, dois loops são aninhados dentro de um loop while.À medida que os codificadores adicionam mais loops, certifique-se de verificar a indenção para que o código possa ser fácil de ler.