Parpadeantes luces es una fuerza poderosa en influir en el tono de un entorno, ambiente. Por ejemplo, una casa con iluminación de una consistencia de brillo puede sentirse cálida y atractiva, pero si agrega luces parpadeantes a ese mismo pasillo de la inicio, se vuelve aterrador y puede sugerir posible peligro adelante. Al modelar y scripting diferentes fuentes de luz dentro de su experiencia, puede agregar un nivel nuevo a su relato amb
Como con cualquier creaciones3D, hay muchas formas de lograr cualquier objetivo específico. En este guía, puede crear rápidamente una animación de luz parpadeante usando herramientas y métodos disponibles solo dentro de Studio con solo algunos activos básicos, incluido un archivo .rbxm para el modelo de lámpara del banco que contiene hijos Class.MeshParts que puede personalizar para que encaje con el
En el siguiente método para crear luces parpadeantes, siga cada sección para aprender a crear:
- Un brillo NumberSequence para influir en el brillo de la lámpara a lo largo del tiempo.
- Atributo de duración de lazo para determinar la cantidad de tiempo que cada bucle de miedo debe tomar.
Importando la Lámpara de Ejemplo
Este guía usa un archivo de descarga de .rbxm de un modelo de lámpara de bancario de alta calidad y personalizable para mostrar una técnica de luz de destellos. Puedes usar este modelo para entender los principios básicos y luego aplicarlos a tus propios modelos que creas dentro de Studio o en cualquier otro software de modelado de terceros.
Para importar el BankersLamp.rbxm :
En la ventana Explorador , haz clic con el botón derecho en Espacio de trabajo . Se muestra un menú contextual.
Seleccione Insertar desde el archivo... Un navegador de archivos.
Seleccione el BankersLamp.rbxm , luego haga clic en el botón Abrir . El modelo se muestra dentro de la ventana de vista.
Creando una secuencia de números de brillo
Un NumberSequence es un tipo de datos que representa una serie de valores numéricos de 0 a 1 a lo largo de la vida de un instancia. Este tipo de datos es útil para crear luces parpadeantes porque puedes especificar cómo quieres que el brillo de la lámpara cambie a lo largo de su vida, y cuando cambias el brillo de la lámpara de toda la intensidad a no hay luz en absoluto en la secuencia corta, pued
El eje X de un NumberSequence representa el tiempo, y el eje Y representa la brillantez relativa. Cada cuadrado en el comienzo y final de la secuencia de números es un keypoint que determina el valor de la propiedad en ese momento de la vida de
Si bien la lámpara no tiene un brillo NumberSequence por defecto, puede crear un atributo de brillo, establecerlo en un introducirNumberSequence y luego experimentar agregando puntos de interrupción con diferentes valores hasta que la lámpara parpadee en su cadencia predeterminada.
Para crear una brillantez NumberSequence :
Añade un nuevo atributo NumberSequencia al aplicación de modeladode lámpara.
En la ventana Explorador , seleccione el aplicación de modeladode lámpara.
En la ventana Propiedades , navegue a la sección Atributos y haga clic en el botón Añadir atributo . La 1>ventana Añadir atributo1> se muestra.
En el diálogo de Añadir atributo ,
En el campo Nombre , ingrese Curva de brillo .
Haga clic en el menú de suspensión de tipo Escriba , y luego seleccione NumberSequencia .
Haga clic en el botón Guardar . La nueva propiedad se muestra en la sección Atributos de la ventana Propiedades .
Seleccione la nueva propiedad Curva de brillo , luego haga clic en el botón … . Se muestra una secuencia de números.
Realice una de las siguientes acciones:
- Para cambiar el brillo en un punto, haz clic en un tecla y arrástrala hacia arriba o hacia abajo, o ingresa un valor en el campo Valor .
- Para insertar nuevos puntos de acceso, haz clic en cualquier punto en el gráfico.
- Para eliminar un punto de clave, seleccione el punto de clave, luego el botón Eliminar .
- Para agregar un rango aleatorio para el brillo, haz clic en cualquier punto de tecla y arrastra las líneas de envoltura hacia arriba o hacia abajo. En ese momento, la luz genera en un brillo aleatorio entre el envoltorio rosa.
Por ejemplo, el siguiente gráfico hace que el parpadeo de la luz sea de máxima potencia para el primer parpadeo, 50% de brillo para el segundo parpadeo, luego 75% de brillo para el tercer parpadeo.
Crear una duración de ciclo
Ahora que tienes un NumberSequence para determinar cómo cambia la brillantez de la lámpara a lo largo de su vida útil, debes determinar la duración de la que se repite en segundos. En otras palabras, esta duración de lazo básicamente controla con qué frecuencia se repite la NumberSequence en segundos.
Para crear una duración de ciclo:
Añade un nuevo atributo de duración aplicación de modeladociclo a la lámpara.
En la ventana Explorador , seleccione el aplicación de modeladode lámpara.
En la ventana Propiedades , navegue a la sección Atributos y haga clic en el botón Añadir atributo . La 1>ventana Añadir atributo1> se muestra.
En el diálogo de Añadir atributo ,
En el campo Nombre , ingrese Duración de ciclo .
Haga clic en el menú de suspensión de tipo Escriba , y luego seleccione Número .
Haga clic en el botón Guardar . La nueva propiedad se muestra en la sección Atributos de la ventana Propiedades .
Establece el nuevo atributo LoopDuration a 1 . Esto le dice al NumberSequence que se repita después de un segundo.
Programar el parpadeo de la luz
Ahora que tienes todos los elementos para controlar el brillo de tu lámpara a lo largo de su vida útil, es hora de crear un Script que funcione juntos y haga que el luz parpadee.
Para hacer que el parpadeo de la luz:
- En la ventana Explorador , pasa el mouse sobre el modelo de lámpara y haz clic en el botón ⊕. Se muestra un menú contextual.
- Del menú, insere un Script .
- En el nuevo script, ingrese lo siguiendo:
local RunService = game:GetService("RunService")
-- Obtiene los valores de atributo establecidos en el aplicación de modelado.
local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")
local loopDuration = script.Parent:GetAttribute("LoopDuration")
-- Almacena referencias a las instancias del aplicación de modeladoque cambiarán.
local light = script.Parent.lamp_hood.SpotLight
local bulb = script.Parent.lightbulb
local beam = script.Parent.lamp_hood.Beam
-- Almacena los valores originales de las propiedades que cambiarán.
local origLightBrightness = light.Brightness
local origBeamBrightness = beam.Brightness
local origBulbColor = bulb.Color
-- Obtiene el valor de la NumberSequencia (ns) en un momento específico (nsTime)
function evaluateNumberSequence(ns: NumberSequence, nsTime: number)
-- Si estamos en 0 o 1, devuelve el valor del primer o último punto de interfono, respectivamente.
if nsTime == 0 then
return ns.Keypoints[1].Value
end
if nsTime == 1 then
return ns.Keypoints[#ns.Keypoints].Value
end
-- De lo contrario, pasa a través de cada par de puntos de clave secuenciales.
for i = 1, #ns.Keypoints - 1 do
-- Obtiene el punto de interfono actual y siguiente.
local currKp = ns.Keypoints[i]
local nextKp = ns.Keypoints[i + 1]
-- Si nsTime está entre los tiempos de los puntos de clave,
if nsTime >= currKp.Time and nsTime < nextKp.Time then
-- Calcula dónde se encuentra nsTime entre los tiempos de los puntos de clave, llama a esta alfa.
local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)
-- Devuelve el valor entre los puntos para nsTime usando alpha.
return currKp.Value + (nextKp.Value - currKp.Value) * alpha
end
end
end
RunService.Heartbeat:Connect(function()
-- Resuelve el tiempo de la NumberMatrix (entre 0 y 1).
local t = time() / loopDuration
local numberSequenceTime = t - math.floor(t)
-- Obtiene el valor de NumberSequencia en este momento.
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
-- Ajusta el brillo y las propiedades de color según este valor.
light.Brightness = origLightBrightness * brightnessValue
beam.Brightness = origBeamBrightness * brightnessValue
bulb.Color = Color3.new(
origBulbColor.r * brightnessValue,
origBulbColor.g * brightnessValue,
origBulbColor.b * brightnessValue
)
end)
Cuando pruebas tu experiencia, la función Heartbeat ejecuta lo siguiente en cada marco:
- Soluciona para un tiempo ( numberSequenceTime ) dentro del brightnessCurve``Datatype.NumberSequence basado en el tiempo actual.
- El tiempo está entre 0 y 1, ya que estos representan el comienzo y el final de la secuencia de números, respectivamente.
- Soluciona para el valor ( brightnessValue ) de la brightnessCurve``Datatype.NumberSequence en el tiempo 1> numberSequenciaTime1> .
- evaluateNumberSequence() califica el valor asociado con el tiempo para cualquier NumberSequence .
- Este valor sirve como un valor de brillo relativo para aplicar a las propiedades que cambian con el tiempo.
- Cambia las propiedades de las lámparas multiplicando brightnessValue por la brillosidad, la brillosidad del rayo y el color de la lámpara.
Los cambios en estas propiedades a lo largo del tiempo resultan en el efecto de parpadeo a continuación.