Para praticar os loops, você criará uma lâmpada que gradualmente brilha mais brilhante e depois diminui com o tempo. Este script pode então ser aplicado a qualquer outra luz em um projeto, seja uma luz de rua ou um cristal brilhante.
Configurando a peça e o script
A lâmpada será uma parte com uma luz e script anexados.
Para facilitar a visualização da luz, altere o mundo do jogo para horário noturno . No Explorador > Iluminação > altere Horário para 0.
Crie uma nova peça ou modelo chamado Lamp.
Selecione Lâmpada e adicione uma luz , como uma PointLight ou SpotLight. Você irá trabalhar com a propriedade de brilho da luz para criar uma lâmpada brilhante.
Em Lamp, adicione um novo script chamado GlowScript. Nesse script, crie variáveis para armazenar a parte da lâmpada e a luz do ponto.
local lightPart = script.Parentlocal light = lightPart.SpotLightEm seguida, crie uma variável para conter o quanto o brilho da luz mudará cada vez que o loop correr. Em seguida, adicione outra variável por quantos segundos os loops esperarão antes de correr novamente.
-- Quanto o brilho da luz mudará a cada vezlocal brightnessChange = 1-- Com que frequência em segundos a luz mudará de brilholocal timeChange = 1
Fazendo a lâmpada brilhar
A lâmpada usará dois para loops , um que conta para cima para tornar a lâmpada mais brilhante e outro que conta para baixo para apagá-la. Cada for loop terá uma variável de controle chamada currentBrightness. Dessa forma, à medida que a variável de controle do for loop aumenta e diminui, o brilho da luz também.
Primeiro Loop (Aumento de Luz)
Lembre-se, um loop de for começa com a palavra-chave for seguido por uma variável de controle. Este script irá definir o valor do 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 uma vírgula.
- Variável de controle : currentBrightness
- Valor inicial : 0
- Valor final : 5
- Valor de Incremento : brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendNo escopo do loop for, defina a propriedade de brilho da luz no valor da variável de controle digitando light.Brightness = currentBrightness. Agora, quando o loop correr, a luz ficará mais brilhante.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendPara que a mudança não aconteça 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)endCorra o jogo para ver o aumento do brilho da luz a cada segundo.
Se você não consegue ver a mudança de brilho ao longo do tempo no primeiro loop:
- Certifique-se de que light.Brightness = currentBrightness esteja entre o fazer e o fim do loop for.
- Verifique se timeChange é pelo menos 1 ou mais. Números menores farão com que o brilho mude mais rápido, mas sejam mais difíceis de ver ao longo do tempo.
- Certifique-se de que a primeira linha do seu loop for tenha duas vírgulas totais separando a variável de controle, o valor final e o valor de incremento.
Segundo Loop (Diminuição de Luz)
Para diminuir a luz, use um segundo para o loop. Os valores deste loop serão revertidos para que a luz comece a brilhar e a cada segundo, fique mais fraca.
Crie um segundo para o loop que diminui o 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 dimmer de segundo loopfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endCorra o seu jogo; você deve ver a luz brilhar e depois diminuir.
Fazendo a luz se repetir
No momento, a luz só liga e desliga uma vez. Para fazer com que a lâmpada brilhe desligado, os loops para serão colocados dentro de um loop de repetição.
Sob os loops for, crie um novo loop while.
while true doendColoque ambos para loops dentro de um loop enquanto. Indente os loops para torná-los mais fáceis de distinguir do loop enquanto.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendCorra o jogo para ver a luz ficar brilhante e escura continuamente.
Script de Luz Terminado
Uma versão finalizada do script pode ser referenciada abaixo.
-- Armazena a luz anexada a esta lâmpadalightPart = script.Parentlight = lightPart.SpotLight-- Quanto o brilho da luz mudará a 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 loop para desligar a luzfor count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
Resumo
Para criar efeitos complexos em um projeto, scripts podem usar vários loops e até combinações de diferentes tipos de loops. Para codificar uma luz brilhante, dois loops são aninhados dentro de um loop temporário. Como os codificadores adicionam mais loops, certifique-se de verificar a indentação para que o código possa ser fácil de ler.