Criando Luzes Piscando | Documentação - Central de Criadores Roblox (2024)

As luzes piscando são uma força poderosa em influenciar o tom de um ambiente. Por exemplo, uma casa com iluminação de um brilho consistente pode se sentir quente e convidativa, mas se você adicionar luzes piscando ao corredor da mesma início, ela se torna assombrosa e pode sugerir um possível perigo à frente. Ao modelar e programar estrategicamente diferentes fontes de luz dentro de sua experiência, você pode adicionar um novo nível à sua narrativa ambiental.

Como com todas as criações em 3D, existem muitas maneiras de alcançar qualquer objetivo específico. Neste guia, você pode criar rapidamente uma animação de luz piscando usando ferramentas e métodos disponíveis apenas no Studio com apenas alguns ativos básicos, incluindo um arquivo .rbxm para o modelo de lâmpada do banqueiro que contém criança Class.MeshParts que você pode personalizar para se adequar à estética de suas próprias experiências.

No seguinte método para criar luzes piscando, siga cada seção para aprender como Criar:

  • Um brilho NumberSequence para influenciar o brilho da lâmpada ao longo do tempo.

  • Um atributo de duração de loop para determinar a quantidade de tempo que cada loop piscando deve levar.

  • Um Script que configura como os dois atributos funcionam com o filho do modelo MeshParts para piscar a luz da lâmpada.

Você pode criar seus próprios ativos em ferramentas de modelagem de terceiros e seguir junto com seu próprio design. Para obter informações sobre como exportar modelos para uso no Studio, consulte Exportação de Requisitos .

Importando a Lâmpada de Amostra

Este guia usa um arquivo .rbxm para download de um modelo de lâmpada de banqueiro de alta qualidade e personalizável para demonstrar uma técnica de luz piscando. Você pode usar este modelo para entender os princípios básicos e, em seguida, aplicá-los aos seus próprios modelos que você cria no Studio ou em outro software de modelagem de terceiros.

Para importar o BankersLamp.rbxm :

  1. Na janela Explorer , clique com o botão direito Workspace . Um menu contextual é exibido.

  2. Selecione Inserir de arquivo... Um navegador de arquivos é exibido.

  3. Selecione a BankersLamp .rbxm , e clique no botão Abrir . O modelo é exibido no campo de janela.

    Criando Luzes Piscando | Documentação - Central de Criadores Roblox (1)

Criando uma sequência de números de brilho

Um NumberSequence é um tipo de dados que representa uma série de valores numéricos de 0 a 1 ao longo da vida de uma instância. Este tipo de dados é útil para criar luzes piscando porque você pode especificar como deseja que o brilho da luz da lâmpada mude ao longo de sua vida, e quando você muda o brilho de intensidade total para nenhuma luz em breve sucessão, você pode alcançar um efeito piscando.

O eixo X de um NumberSequence representa o tempo e o eixo Y representa o brilho relativo. Cada quadrado no início e no final da sequência de números é um ponto-chave **** que determina o valor da propriedade naquele ponto da vida útil do brilho da luz. Quando você cria um NumberSequence pela primeira vez, o gráfico é uma linha reta e a luz permanece com a mesma intensidade de brilho ao longo de sua vida, mas adicionando e movendo pontos-chave ao redor, você pode criar curvas dentro da sequência e alterar o brilho da lâmpada ao longo do tempo.

Criando Luzes Piscando | Documentação - Central de Criadores Roblox (2)

Embora a lâmpada não tenha um brilho NumberSequence por padrão, você pode criar um atributo de brilho, configurá-lo como NumberSequence e, em seguida, experimentar adicionando pontos-chave com valores diferentes até que a luz flicke na cadência definida.

Para criar um brilho NumberSequence :

  1. Adicione um novo atributo NumberSequence ao modelo da lâmpada.

    1. Na janela Explorer , selecione o modelo da lâmpada.

    2. Na janela Propriedades , navegue até a seção Atributos e clique no botão Adicionar Atributo . O diálogo Adicionar Atributo é exibido.

    3. Na caixa de diálogo Adicionar Atributo ,

      1. No campo Nome , insira Curva de Brilho .

      2. Clique no menu suspenso Digite e selecione Sequência de números .

      3. Clique no botão Salvar . O novo atributo é exibido na seção Atributos da janela Propriedades .

        Criando Luzes Piscando | Documentação - Central de Criadores Roblox (3)
  2. Realize uma das seguintes ações:

    • Para alterar o brilho em um ponto, clique em um ponto-chave e arraste-o para cima ou para baixo, ou insira um valor no campo Valor .

    • Para inserir novos pontos-chave, clique em qualquer ponto do gráfico.

    • Para excluir um ponto-chave, selecione o ponto-chave e, em seguida, o botão Delete .

    • Para adicionar um intervalo aleatório de brilho, clique em qualquer ponto-chave e arraste as linhas do envelope para cima ou para baixo. Nesse momento, a luz gera um brilho aleatório entre o envelope rosa.

Por exemplo, o gráfico a seguir faz com que a luz cintile até o brilho total para a primeira cintilação, 50% de brilho para a segunda cintilação e 75% de brilho para a terceira cintilação.

Criando Luzes Piscando | Documentação - Central de Criadores Roblox (5)

Criando uma Duração de Loop

Agora que você tem um NumberSequence para determinar como o brilho da luz da lâmpada muda ao longo de sua vida, você deve determinar quanto tempo você deseja que o loop pisque. Em outras palavras, essa duração do loop essencialmente controla a frequência com que o NumberSequence se repete, em segundos.

Para criar uma duração de loop:

  1. Adicione um novo atributo de duração de loop ao modelo da lâmpada.

    1. Na janela Explorer , selecione o modelo da lâmpada.

    2. Na janela Propriedades , navegue até a seção Atributos e clique no botão Adicionar Atributo . O diálogo Adicionar Atributo é exibido.

    3. Na caixa de diálogo Adicionar Atributo ,

      1. No campo Name , insira LoopDuration .

      2. Clique no menu suspenso Digite e selecione Número .

      3. Clique no botão Salvar . O novo atributo é exibido na seção Atributos da janela Propriedades .

        Criando Luzes Piscando | Documentação - Central de Criadores Roblox (6)
  2. Defina o novo atributo LoopDuration para 1 . Isso diz ao NumberSequence para repetir após um segundo.

Programando o piscar de luz

Agora que você tem todos os elementos para controlar o brilho da sua lâmpada ao longo de sua vida útil, é hora de criar um Script que fará com que tudo funcione em conjunto e piscará a luz.

Para programar o piscar de luz:

  1. Na janela Explorer , passe o mouse sobre o modelo da lâmpada e clique no botão ⊕. Um menu contextual é exibido.

  2. Do menu, insira um Script .

  3. No novo script, digite o seguindo:

local RunService = game:GetService("RunService")

-- Obtém os valores do atributo definidos no modelo.

local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")

local loopDuration = script.Parent:GetAttribute("LoopDuration")

-- Armazena referências às instâncias do modelo que serão alteradas.

local light = script.Parent.lamp_hood.SpotLight

local bulb = script.Parent.lightbulb

local beam = script.Parent.lamp_hood.Beam

-- Armazena os valores originais das propriedades que vão mudar.

local origLightBrightness = light.Brightness

local origBeamBrightness = beam.Brightness

local origBulbColor = bulb.Color

-- Obtém o valor da sequência de números (ns) em um momento específico (nsTime)

function evaluateNumberSequence(ns: NumberSequence, nsTime: number)

-- Se estivermos em 0 ou 1, retorna o valor do primeiro ou último ponto-chave, respectivamente.

if nsTime == 0 then

return ns.Keypoints[1].Value

end

if nsTime == 1 then

return ns.Keypoints[#ns.Keypoints].Value

end

-- Caso contrário, passe por cada par sequencial de pontos-chave.

for i = 1, #ns.Keypoints - 1 do

-- Obtém o ponto-chave atual e o próximo.

local currKp = ns.Keypoints[i]

local nextKp = ns.Keypoints[i + 1]

-- Se nsTime estiver entre os tempos dos pontos-chave,

if nsTime >= currKp.Time and nsTime < nextKp.Time then

-- Calcula onde nsTime está entre os tempos dos pontos-chave, chama esse alpha.

local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)

-- Retorna o valor entre os pontos para nsTime usando alpha.

return currKp.Value + (nextKp.Value - currKp.Value) * alpha

end

end

end

RunService.Heartbeat:Connect(function()

-- Soluciona pelo tempo da Sequência de Números (entre 0 e 1).

local t = time() / loopDuration

local numberSequenceTime = t - math.floor(t)

-- Obtém o valor da sequência de números no momento.

local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)

-- Ajusta as propriedades de brilho e cor com base nesse valor.

light.Brightness = origLightBrightness * brightnessValue

beam.Brightness = origBeamBrightness * brightnessValue

bulb.Color = Color3.new(

origBulbColor.r * brightnessValue,

origBulbColor.g * brightnessValue,

origBulbColor.b * brightnessValue

)

end)

Quando você testou sua experiência, a função Heartbeat faz o seguinte a cada quadro:

  1. Soluciona por um tempo (numberSequenceTime ) dentro do brightnessCurve``Datatype.NumberSequence com base no tempo atual.

    • O tempo está entre 0 e 1, pois representam o começo e o fim da sequência de números, respectivamente.

  2. Soluciona o valor (brightnessValue ) do brightnessCurve``Datatype.NumberSequence no tempo numberSequenceTime.

    • evaluateNumberSequence() calcula o valor associado ao tempo para qualquer NumberSequence.

    • Este valor serve como um valor de brilho relativo para aplicar às propriedades que mudam ao longo do tempo.

  3. Muda as propriedades das lâmpadas multiplicando brightnessValue pelo brilho da luz, brilho do feixe e cor da lâmpada.

As mudanças nessas propriedades ao longo do tempo resultam no efeito piscando abaixo.

Criando Luzes Piscando | Documentação - Central de Criadores Roblox (2024)

References

Top Articles
Latest Posts
Article information

Author: Wyatt Volkman LLD

Last Updated:

Views: 6382

Rating: 4.6 / 5 (46 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Wyatt Volkman LLD

Birthday: 1992-02-16

Address: Suite 851 78549 Lubowitz Well, Wardside, TX 98080-8615

Phone: +67618977178100

Job: Manufacturing Director

Hobby: Running, Mountaineering, Inline skating, Writing, Baton twirling, Computer programming, Stone skipping

Introduction: My name is Wyatt Volkman LLD, I am a handsome, rich, comfortable, lively, zealous, graceful, gifted person who loves writing and wants to share my knowledge and understanding with you.