Trail
Un Trail conecta dos Attachments y dibuja una estela con textura a lo largo del camino que recorren los Attachments. Mueve los Attachments por el espacio, y el Trail deja una estela visible detrás. Deja de moverlos, y la estela desaparece gradualmente a medida que cada segmento envejece.
Eso es algo nativo de Roblox — la clase Trail de Roblox hace el dibujo real, el desvanecimiento por segmento, el mapeo de texturas. El rol del plugin para Trail es más acotado que para los otros tipos: te da un panel de propiedades que lee y escribe valores del Trail directamente, y pulsa la bandera Enabled del Trail para emisiones temporizadas. Todo lo que ves en pantalla es el renderizado nativo de Roblox de los valores de propiedades que has configurado.
Qué transforma
Sección titulada «Qué transforma»Cualquier instancia Trail de Roblox con Attachment0 y Attachment1 válidos. La “transformación” es principalmente un cambio de etiqueta — el plugin marca el Trail como emisor de Part-Icles y comienza a incluirlo en las operaciones de portapapeles, retemporizacion, tono y edición en bloque. No hay Render Template, no hay PartIcleProperties como hijo de Configuration, no hay duplicación por partícula. El Trail conserva sus propiedades nativas de Roblox; el plugin simplemente te da una superficie más cómoda para editarlas.
Así es como el plugin maneja el tipo internamente: cada lectura de propiedad va directamente a la instancia Trail (trail.Color, trail.Transparency, etc.) en lugar de buscarse en un hijo Configuration. Cada escritura de propiedad sigue el mismo camino — configúrala en el panel y el plugin la escribe directamente.
Esa es toda la diferencia arquitectónica. Sin ruta de motor, sin actualización en Heartbeat, sin grupo de clones.
Qué significa “emitir” para un Trail
Sección titulada «Qué significa “emitir” para un Trail»Comportamiento nativo del Trail de Roblox: cuando Enabled es true, el Trail registra nuevos segmentos de ruta a medida que los Attachments se mueven. Cada segmento vive Trail.Lifetime segundos, desvaneciéndose durante ese lapso según los gráficos de Color y Transparency. Cuando Enabled es false, no se registran nuevos segmentos, pero los existentes siguen dibujándose hasta que envejecen.
La “emisión” del plugin para un Trail es un pulso temporizado de esa bandera. Haz clic en Emit (o llama a Particle:AbsoluteEmit(item)), y el plugin establece Trail.Enabled = true, espera los segundos de EmitDuration analizados y lo devuelve a false. El Trail dibuja durante esa ventana; los segmentos nacidos durante la ventana siguen dibujándose durante Lifetime segundos después de que la ventana se cierra (la cola natural).
Particle:Emit(trail) no activa un Trail — la tabla de despacho por tipo dentro de :Emit cubre Beam, PointLight, Attachment, Model, BasePart, los cuatro tipos de espacio de pantalla e ImageLabel, pero no hay rama para Trail (los Trails caen en un no-op silencioso). Usa Particle:AbsoluteEmit(trail) para activar un pulso de emisión de Trail; AbsoluteEmit maneja los Trails a través de una ruta separada que pulsa la bandera Enabled de la misma manera que lo hace el botón Emit del panel.
EmitDuration para un Trail se almacena como cadena de texto. Un único número ("2") es una duración fija. Una cadena de dos valores ("5,2") se analiza como un rango mín/máx — el plugin elige una duración aleatoria entre los dos valores por emisión. Los valores se ordenan, por lo que "5,2" y "2,5" son equivalentes — ambos producen una duración aleatoria en algún punto entre 2 y 5 segundos.
Si EmitDuration se analiza como 0 o no se puede analizar en absoluto (cadena vacía, "abc", etc.), el pulso de emisión se omite — la bandera Enabled del Trail permanece como estaba. Para activar un Trail en absoluto necesitas un valor de duración positivo.
No hay duplicación por emisión. No hay aleatorización por emisión de ninguna otra propiedad — la misma instancia Trail pulsa encendido y apagado. Si quieres variedad entre emisiones, varía EmitDuration (el único valor aleatorizado) o cambia los gráficos de propiedades entre llamadas de emisión.
Propiedades de un vistazo
Sección titulada «Propiedades de un vistazo»La superficie completa, agrupada por sección del panel. Cada fila escribe directamente en la instancia Trail — sin intermediación de PartIcleProperties.
Emission
Sección titulada «Emission»| Etiqueta del panel | Atributo de datos | Tipo | Por defecto | Qué hace |
|---|---|---|---|---|
| Enabled | Enabled (nativo) | boolean | true | Si el Trail registra nuevos segmentos de ruta |
| Lifetime | Lifetime (nativo) | number | 2 | Segundos que vive cada segmento de ruta antes de desvanecerse |
Appearance
Sección titulada «Appearance»| Etiqueta del panel | Atributo de datos | Tipo | Por defecto | Qué hace |
|---|---|---|---|---|
| Texture | Texture (nativo) | string | de la fuente | La imagen pintada a lo largo de la estela |
| Brightness | Brightness (nativo) | number | 1 | Multiplicador de brillo — un único número, no un gráfico |
| Transparency | Transparency (nativo) | NumberSequence | 0.5 | Opacidad a lo largo de la vida del segmento (de nuevo a expirado) |
| Color | Color (nativo) | ColorSequence | blanco | RGB a lo largo de la vida del segmento |
| WidthScale | WidthScale (nativo) | NumberSequence | 1 | Grosor de la estela a lo largo de la vida del segmento |
| LightEmission | LightEmission (nativo) | number | 0 | Auto-iluminación, mezcla aditiva |
| LightInfluence | LightInfluence (nativo) | number | 1 | Cuánto afecta la iluminación de la escena a la estela |
Geometry
Sección titulada «Geometry»| Etiqueta del panel | Atributo de datos | Tipo | Por defecto | Qué hace |
|---|---|---|---|---|
| MinLength | MinLength (nativo) | number | 0.1 | Longitud mínima del segmento de ruta, en studs |
| MaxLength | MaxLength (nativo) | number | 0 | Longitud total máxima de la estela. 0 es ilimitada |
| TextureLength | TextureLength (nativo) | number | 1 | Cuánto cubre un tile de textura a lo largo de la estela |
| TextureMode | TextureMode (nativo) | enum | Stretch | Cómo se ajusta la textura — Stretch, Wrap, Static |
| FaceCamera | FaceCamera (nativo) | boolean | false | Reorienta el lado plano de la estela para mirar a la cámara en cada fotograma |
Advanced
Sección titulada «Advanced»| Etiqueta del panel | Atributo de datos | Tipo | Por defecto | Qué hace |
|---|---|---|---|---|
| PreloadTexture | PreloadTexture (atributo) | boolean | false | Fuerza la carga de la textura antes de que comience la emisión |
Ese es el panel completo. No hay sección Spawning más allá de Enabled/Lifetime, no hay sección Movement (la estela no se mueve — sus extremos lo hacen, y eso está fuera del control del plugin), no hay bandera Advanced para Anim. Steps ni Linger (no hay animación de motor por fotograma que muestrear). No hay GraphBlender (Color y Transparency únicos son suficientes para las estelas).
El atributo EmitDuration (que controla cuánto tiempo permanece activado Trail.Enabled por emisión) vive en la instancia Trail como atributo de Studio en lugar de como fila del panel — la sección Duration más abajo lo cubre.
Prosa por propiedad
Sección titulada «Prosa por propiedad»Lifetime
Sección titulada «Lifetime»Cuánto tiempo vive cada segmento de ruta antes de desvanecerse. Un number, no un NumberRange — el mismo valor se aplica a cada segmento. El valor por defecto es 2 segundos.
Este es un significado diferente al de Lifetime en un emisor Part. Allí, Lifetime es la duración por partícula; aquí, es cuánto tiempo persiste cada pieza de la estela antes de que el motor la borre. Una estela con Lifetime = 5 deja una estela larga que se desvanece lentamente. Una estela con Lifetime = 0.2 deja un destello breve que desaparece casi de inmediato.
Combinado con la velocidad a la que se mueven los Attachments, Lifetime controla qué tan larga es la estela visible en pantalla. Attachments rápidos + Lifetime largo = una cinta larga; Attachments lentos + Lifetime corto = una mancha tenue.
EmitDuration as an attribute
Sección titulada «EmitDuration as an attribute»La perilla de temporización específica del plugin vive en el Trail como atributo de Studio en lugar de como fila del panel — establécela mediante el panel Attributes de Studio, el mismo lugar en el que establecerías EmitDelay o EmitCount en cualquier otro tipo transformado. (Versiones anteriores del plugin la exponían como una fila redundante Duration en la sección Emission; la fila se eliminó porque el atributo ya cubría el mismo terreno.)
Una cadena de texto. Un único número ("2") es una duración fija en segundos. Un par separado por comas ("5,2") se analiza como un rango mín/máx — el plugin elige una duración aleatoria entre los dos números por emisión. El orden no importa ("5,2" y "2,5" producen el mismo rango). El valor por defecto es "2".
EmitDuration controla únicamente cuánto tiempo permanece activado Trail.Enabled por emisión. Una vez que la ventana se cierra, los segmentos nacidos durante la ventana siguen dibujándose durante Lifetime segundos más — ese es el comportamiento nativo de Roblox, no parte de EmitDuration. Así que la estela visible supera al pulso de emisión hasta Lifetime segundos.
Si quieres estelas que pulsen en ráfagas de duración variable (un láser parpadeante, un empuje entrecortado), establece EmitDuration en un rango de dos valores. Si quieres pulsos uniformes y limpios, déjalo como un número único.
Texture
Sección titulada «Texture»La imagen pintada a lo largo de la estela. Un id de asset de Roblox. Cada segmento de la estela muestra una porción de la textura, mapeada según TextureMode y TextureLength. Las texturas animadas (flipbooks) en Trails no son compatibles con el sistema de flipbooks del plugin — los flipbooks son una característica de Part/Beam.
Brightness
Sección titulada «Brightness»Un único number, no un gráfico. Multiplica el brillo renderizado de la estela uniformemente en todos los segmentos. Los valores por encima de 1 hacen que la estela brille más intensamente; los valores por debajo de 1 la atenúan.
Este es uno de los problemas de mismo-nombre-forma-diferente (polimorfismo) del plugin: Brightness es un gráfico NumberSequence en Part, Beam y PointLight, pero un único number en Trail (y en el ParticleEmitter de Roblox). La razón es mecánica: Trail.Brightness de Roblox es una propiedad de un único number, no un NumberSequence. El plugin no puede exponer un editor de gráficos sobre una propiedad que no tiene un canal de secuencia por debajo, así que permanece como un campo de valor único. Los editores de gráficos en otras partes del Trail — Color, Transparency, WidthScale — aparecen porque esas sí son propiedades de secuencia en la clase Trail de Roblox.
Transparency
Sección titulada «Transparency»Un NumberSequence para la opacidad a lo largo de la vida de cada segmento, de nuevo (age 0) a expirado (age 1). 0 es completamente opaco; 1 es invisible.
Una estela “fade-out” usa 0 en age 0 subiendo a 1 en age 1 — cada segmento comienza opaco cuando nace y se desvanece hasta hacerse invisible a medida que envejece. Así es como las estelas se disipan de forma natural en lugar de cortarse abruptamente.
Un ColorSequence para el tono a lo largo de la vida de cada segmento. Una estela de llama podría ir de blanco-amarillo en el nacimiento a rojo intenso al expirar. Una estela mágica podría recorrer varios tonos.
Roblox interpola el gráfico de color a lo largo de cada segmento a medida que envejece, dibujando cada pieza de la estela con el color que el gráfico indica en su age actual.
WidthScale
Sección titulada «WidthScale»Un multiplicador NumberSequence sobre el grosor de la estela, que varía a lo largo de la vida de cada segmento.
Una estela que se estrecha con la edad usa un gráfico de 1 en age 0 a 0 en age 1 — los segmentos tienen el ancho completo cuando son nuevos y se reducen a nada a medida que expiran. Una estela que se ensancha usa la forma opuesta. Los gráficos pulsantes producen anchos que ondean a lo largo de la estela.
El gráfico es un multiplicador. El ancho real proviene de la propiedad Width del Trail fuente (una propiedad Trail nativa de Roblox que el plugin no expone en su panel). WidthScale se aplica sobre ese ancho base.
Estos tres gráficos no son animados por el plugin — se almacenan en la instancia Trail y Roblox los renderiza a medida que el Trail dibuja. El rol del plugin es darte un editor de gráficos que escribe estos valores directamente en Trail.Color, Trail.Transparency, Trail.WidthScale.
LightEmission
Sección titulada «LightEmission»Un único number, no un gráfico. Intensidad de mezcla aditiva. 0 es mezcla normal; 1 es completamente auto-iluminado. Útil para estelas de láser, magia o empuje donde la franja debería parecer que es una fuente de luz.
LightInfluence
Sección titulada «LightInfluence»Un único number. Integración con la iluminación de la escena: 0 ignora la iluminación de la escena (la estela siempre se renderiza con su brillo base); 1 se integra completamente (la estela se atenúa en las sombras).
El valor por defecto de Trail difiere del de Beam: LightInfluence es 1 por defecto (se integra con la iluminación), y el plugin no lo fuerza a 0 como lo hace con Beam. La razón: las estelas a menudo deberían respetar la iluminación de la escena — una estela del mundo real de polvo o niebla se lee de forma más natural cuando está sombreada por otra geometría. Si quieres una estela auto-iluminada de todas formas, establécelo en 0.
MinLength
Sección titulada «MinLength»La distancia mínima que deben recorrer los Attachments antes de que el motor cree un nuevo segmento de ruta, en studs. Los valores más pequeños significan estelas más suaves a costa de más segmentos. Los valores más grandes significan estelas más entrecortadas con menos segmentos.
El valor por defecto es 0.1. Para estelas curvas o de movimiento rápido, déjalo bajo. Para estelas rectas y de movimiento lento, aumentarlo reduce el número de segmentos sin mucho coste visual.
MaxLength
Sección titulada «MaxLength»La longitud total máxima de la estela visible, en studs. 0 (el valor por defecto) significa sin límite; la estela puede crecer tanto como Lifetime × velocidad-máxima permita.
Establecer un límite es una palanca de rendimiento para Attachments de movimiento rápido — sin uno, una estela de misil a alta velocidad podría producir estelas de kilómetros de longitud que acumulan segmentos. Con MaxLength = 50, la estela se recorta a sí misma a cincuenta studs aunque los Attachments vuelen más rápido.
TextureLength
Sección titulada «TextureLength»Cuánto cubre un tile de textura a lo largo de la estela, en studs. Los valores más grandes estiran cada tile; los valores más pequeños empaquetan más tiles en la misma longitud. Combinado con TextureMode = Wrap, esto controla el tamaño aparente del patrón de textura a lo largo de la estela.
TextureMode
Sección titulada «TextureMode»Cómo se ajusta la textura a la estela. El mismo enum que Beam — Stretch, Wrap, Static.
Stretch(el valor por defecto) — la textura se escala para ajustarse a la longitud total de la estela una vez.TextureLengthse ignora.Wrap— la textura se repite a lo largo de la estela, conTextureLengthcontrolando el tamaño del tile.Static— la textura está anclada al mundo; la estela se desliza a través de una coordenada de textura fija.
FaceCamera
Sección titulada «FaceCamera»Un interruptor. El valor por defecto es false — un valor por defecto diferente al true de Beam. El lado plano de un Trail tiene una orientación fija derivada de los vectores Up de los Attachments, que normalmente se lee correctamente en escenas 3D sin billboarding. Actívalo si el ángulo de tu cámara revela el borde de la estela de perfil (lo que la hace desaparecer).
PreloadTexture
Sección titulada «PreloadTexture»Mismo rol que en Beam: garantiza que la textura esté cargada antes de que comience el primer pulso de emisión. Útil para efectos cinemáticos con tiempos ajustados. La mayor parte del tiempo, déjalo desactivado.
Vale la pena saber
Sección titulada «Vale la pena saber»Algunas peculiaridades específicas de Trail.
Transform es un no-op para Trail. El flujo Transform del plugin no crea un RenderTemplate, no crea una Configuration de PartIcleProperties y no añade el conjunto de atributos que obtienen otros tipos. Marca el Trail como emisor de Part-Icle (para que el plugin lo reconozca en operaciones de portapapeles/retime/tono/edición en bloque), y eso es todo. El Trail conserva sus propiedades nativas de Roblox sin cambios.
Sin “modo Animate” para Trail. El modo Animate (cubierto en el capítulo 6) solo se aplica a los tipos que duplican y animan. Trail no duplica — su visual siempre está en vivo, dibujado por Roblox a medida que los Attachments se mueven. El plugin no expone EmissionMode ni AnimateLoop en los Trails transformados porque no hay elección que tomar.
No puedes poner un Render Template dentro de un Trail. Algunos usuarios que vienen de Part preguntan “¿puedo poner una instancia hija dentro del Trail y hacer que genere ese hijo mientras el Trail dibuja?” No — los Trails de Roblox no llevan hijos por segmento. Si quieres un comportamiento de partícula-siguiendo-estela (cada partícula deja su propia estela corta detrás), la configuración es diferente: coloca un Attachment con un Trail dentro del Render Template de un emisor Part. Cada Part-partícula emitida lleva entonces su propio Attachment+Trail y deja una pequeña franja. Eso se cubre en Hidden Depths.
Brightness, LightEmission, LightInfluence son números únicos. Fácil de olvidar si estás creando desde un modelo mental de emisor Part donde estos son gráficos. La entrada del panel es un campo numérico, no un botón de gráfico — esa es la señal visual.
Lifetime aquí es por segmento, no por partícula. Mismo nombre que en Part, semántica diferente. Ten cuidado al leer valores entre tipos — un Lifetime de 0.5 en un emisor Part significa que cada partícula vive medio segundo, pero en un Trail significa que cada segmento de ruta se desvanece en medio segundo.
Qué sigue
Sección titulada «Qué sigue»Trail le cedió el control del renderizado al comportamiento Trail integrado de Roblox. El siguiente capítulo — TrailEmitter — es un hermano del Trail simple: misma instancia fuente, pero la herramienta Transform produce un sistema de partículas de clon-por-emisión en lugar de una conmutación de acceso directo. Elige TrailEmitter cuando quieras múltiples cintas animadas superpuestas; elige el Trail simple cuando una sola estela que puedas conmutar sea suficiente.