Ir al contenido

PointLight

Un PointLight no tiene forma. Es un resplandor que emana desde la ubicación de su padre, iluminando la escena circundante sin ninguna geometría propia. No vuela, no se dispersa, no tiene un tamaño medible en studs.

Por eso un emisor PointLight es el tipo más simple del plugin. Cada emisión produce un duplicado que permanece emparentado en el mismo lugar que la fuente, anima tres propiedades (Range, Brightness, Color) a lo largo de su vida útil, y el motor destruye el duplicado cuando se agota el tiempo. Seis propiedades en total en el panel, tres de ellas gráficas. Esa es toda la superficie.

Cualquier instancia PointLight de Roblox.

El padre del PointLight — típicamente un Part — proporciona la posición. El PointLight no tiene su propio CFrame (las luces son conceptualmente puntos), por lo que cuando el padre se mueve, la luz se mueve con él de forma automática. Cada duplicado emitido hereda el mismo padre y sigue el mismo camino.

Esto es diferente a los tipos de workspace que has visto hasta ahora. No hay un gráfico Position, ni Speed, ni SpreadAngle — todos esos tienen que ver con mover una partícula por el espacio, y un PointLight no tiene un espacio propio por el que moverse. Está fijado a su padre.

Lo que obtienes en su lugar es animación solo de propiedades. En el momento de la emisión, el plugin clona el PointLight de origen, aplica los valores iniciales de cada gráfico y emparenta el duplicado con el padre de la fuente. En cada fotograma posterior, el motor muestrea los tres gráficos en la edad actual del duplicado y escribe los valores directamente en Range, Brightness y Color del duplicado. Cuando se agota el Lifetime del duplicado, el motor lo destruye.

Las luces que emites no se mueven, no ruedan, no se dispersan. Pulsan en su lugar — un resplandor constante por duplicado, animando sus tres valores, y luego desaparecen.

Toda la superficie, agrupada por sección del panel.

Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
EnabledEnabled (attribute)booleanfalseActivar/desactivar maestro
RateRatenumber10Luces emitidas por segundo
LifetimeLifetimeNumberRange1Segundos que vive cada luz, con variación aleatoria
Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
RangePLRangeNumberSequence8Gráfico del radio de luz, en studs
BrightnessPLBrightnessNumberSequence1Gráfico de intensidad del resplandor
ColorPLColorColorSequenceblancoGráfico de tono
ShadowsShadowsbooleanfalseSi la luz proyecta sombras en tiempo real
Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
Anim. StepsTotalKeyFramesnumber100Resolución de pre-muestreo para los gráficos
LingerPartLifenumber0Segundos que la luz permanece visible después de que expire Lifetime
Emit IntoEmitParentInstancenilDónde se emparenta el duplicado — reemplaza el valor predeterminado

Eso es todo. Sin sección de Movement, sin Shape, sin Flipbook, sin GraphBlender. Los demás tipos de workspace tenían superficies más ricas porque tienen geometría que controlar. PointLight no tiene ninguna.


Un gráfico NumberSequence para el radio de la luz, en studs. Range = 8 ilumina todo lo que está dentro de 8 studs de la fuente.

Un efecto de destello usa un gráfico que alcanza un pico alto (digamos 30) en la edad 0 y decae a 0 hacia la edad 1 — una ráfaga repentina de luz que se desvanece rápidamente. Un pulso usa un gráfico oscilante (la luz crece y se reduce rítmicamente). Una luz de carga usa un gráfico que sube desde 0 — la luz comienza oscura y se vuelve brillante a lo largo de su vida útil.

El atributo de datos se llama PLRange para evitar colisionar con el PointLight.Range nativo de Roblox. El plugin lee el valor del panel en PLRange y escribe el valor muestreado en el Range del duplicado en cada fotograma.

Un NumberSequence para la intensidad de la luz, multiplicado por su brillo base. Los valores por encima de 1 hacen que la luz brille con más fuerza; los valores por debajo de 1 la atenúan.

Combinado con Range, Brightness controla qué tan visible es la luz desde la distancia. Una luz de alto brillo y corto alcance es intensa pero localizada. Una luz de bajo brillo y gran alcance es suave pero cubre un área más amplia.

El atributo de datos es PLBrightness por la misma razón de desambiguación que Range.

Un gráfico ColorSequence para el tono de la luz. El efecto PointLight más colorido usa un gráfico de color con múltiples paradas que cambia entre varios matices a lo largo de la vida útil — una luz de magia de fuego podría ir de blanco al nacer a naranja a mitad de vida y a rojo al morir.

Para luces de color estático, el gráfico es simplemente un único color en cada punto clave.

El atributo de datos es PLColor.

Un booleano. Cuando es true, la luz proyecta sombras en tiempo real en la escena; cuando es false (el valor predeterminado), no lo hace.

Esto no es un gráfico — es un único valor aplicado al duplicado en el momento de la emisión y que nunca se anima. La propiedad Shadows de PointLight de Roblox es en sí misma un booleano, no animable. El plugin conserva este modelo de valor único.

Las sombras son costosas. Una sola luz que proyecta sombras afecta el cálculo de iluminación de cada superficie cercana, y Roblox tiene un límite suave en cuántas luces en tiempo real que proyectan sombras pueden estar activas a la vez. Para la mayoría de los PointLight de estilo partícula — orbes mágicos, resplandores de proyectiles, destellos breves — deja Shadows desactivado. Úsalo solo en efectos estacionarios (una antorcha brillante sostenida por un personaje quieto) donde la sombra es una parte deliberada del aspecto visual.

Un campo Instance. De forma predeterminada, cada duplicado emitido se emparenta con el mismo padre que el PointLight de origen (típicamente un Part). Establecer Emit Into en una instancia diferente reparenta las emisiones allí — útil cuando quieres que las luces sobrevivan a su fuente, o cuando estás recopilando todos los efectos emitidos en una carpeta para su inspección.

Para la mayoría de los usos, deja Emit Into vacío. El padre predeterminado proporciona el seguimiento de posición que normalmente deseas.


  • Destellos breves en objetos en movimiento. Un destello de cañón, una chispa de choque de espada, un estallido de lanzamiento de magia. La luz pulsa por una fracción de segundo y desaparece.
  • Luces ambientales persistentes con movimiento. Un orbe mágico cuyo color pulsa mientras orbita a un personaje. Una antorcha cuyo brillo de llama parpadea para sentirse viva.
  • Resplandor en partículas emitidas. Coloca un PointLight dentro de un RenderTemplate de un emisor Part, y cada Part-partícula emitida ahora lleva consigo una luz. La luz sigue la partícula por el espacio; el emisor PointLight por sí solo no vuela, pero un PointLight anidado dentro de un emisor Part monta el movimiento del Part.

Ese tercer patrón es cómo construyes bolas de fuego brillantes, rastros de brasas y otros efectos de “cada partícula es también una luz”. Es una composición de Render Template, no un emisor PointLight directamente. El emisor PointLight es para casos en los que la propia luz es el efecto visible, no un resplandor adjunto a otra cosa.

Algunas peculiaridades específicas de PointLight.

Roblox tiene un límite suave en el recuento de luces en tiempo real. Un presupuesto típico del motor de Roblox es de 8–16 luces en tiempo real simultáneas que afectan a cualquier fragmento dado, según el hardware. Emite cincuenta PointLights por segundo en estrecha proximidad y algunos de ellos silenciosamente no contribuirán al cálculo de iluminación — Roblox elige las más cercanas o brillantes e ignora el resto. Si tus luces emitidas parecen “desaparecidas”, probablemente sea por eso. Reduce Rate, baja Range, o escalone las emisiones entre varias partes.

El prefijo PL en los nombres de atributos. PLRange, PLBrightness, PLColor — nombres de atributos internos que no colisionan con las propiedades nativas Range / Brightness / Color de PointLight. Las etiquetas del panel son las versiones sin prefijo; el prefijo es interno y solo aparece cuando inspeccionas atributos a través de la ventana Properties de Studio o cuando usas scripts contra ellos.

Los duplicados permanecen unidos al padre. El plugin no intenta calcular una posición para los PointLights emitidos — se emparentan con el padre de la fuente y heredan la posición de ese padre. Si el padre se mueve, la luz se mueve; si rota, la posición de la luz rota alrededor del origen del mundo si es necesario. No hay Link Mode, ni Pos. Mode, ni gráficos de desplazamiento porque no hay nada que desplazar.

Enabled está dividido entre la fuente y RenderTemplate. Transform clona la fuente en un RenderTemplate primero, luego fuerza el Enabled = false de la fuente para que no se renderice mientras la estás creando. El RenderTemplate conserva el Enabled pre-Transform de la fuente (típicamente true), y cada duplicado emitido lo hereda — no hay un interruptor Enabled por emisión en EmitPointLight, solo el valor heredado. Resultado neto: las luces emitidas se iluminan automáticamente; la fuente permanece oscura.

PointLight delegó casi todo a Roblox — el posicionamiento, el movimiento, el renderizado. El siguiente tipo va en la dirección opuesta. Model no tiene una única instancia para clonar; tiene una jerarquía. Un modelo es una carpeta de parts, attachments, scripts y otras instancias organizadas en un grupo estructurado. Cuando transformas un Model, ¿qué emite el motor — la jerarquía completa como una unidad, o cada pieza por separado? La respuesta implica un modelo de clonación diferente a todo lo que hemos visto.