Attachment
Tu personaje tiene una espada. La espada tiene un Attachment en su punta — un pequeño marcador invisible, emparentado con la espada. Quieres que salten chispas de esa punta mientras el personaje la balancea.
Linking es una forma de hacerlo: transforma una Part separada como emisor (cualquier instancia auxiliar en tu escena), y apunta su Link Dir. al Attachment de la punta. El objetivo del enlace en sí nunca tiene que transformarse; Linking solo necesita que el lado del emisor sea transformado, y desde ahí rastrea cualquier instancia que le indiques. Ese camino funciona, pero ahora tienes una Part auxiliar en tu escena que existe únicamente para albergar la maquinaria del emisor.
El plugin te ofrece una ruta más directa: transforma el propio Attachment.
Cuando transformas un Attachment, cada partícula emitida aparece en la posición y orientación mundiales actuales del Attachment. Roblox deriva la posición mundial de un Attachment a partir del CFrame de su padre compuesto con el CFrame local propio del Attachment (Parent.CFrame * Attachment.CFrame — la misma composición que hay detrás de la propiedad WorldCFrame). Mientras la espada se balancea, el padre se mueve, y el punto de aparición se mueve con él — sin necesidad de Linking.
Attachment es Part con el seguimiento del padre ya conectado.
Qué transforma
Sección titulada «Qué transforma»Cualquier instancia Attachment.
El Attachment no necesita estar dentro de una Part para que la transformación tenga éxito, pero el comportamiento relativo al padre asume que hay un padre — el caso típico es un Attachment dentro de la punta de una espada, un miembro de un personaje, una herramienta o un modelo de arma. Un Attachment huérfano (emparentado directamente con workspace) sigue emitiendo, pero su CFrame se trata como espacio mundial.
Por qué elegir Attachment en lugar de Part
Sección titulada «Por qué elegir Attachment en lugar de Part»Tres razones:
- El seguimiento del padre es automático. No necesitas configurar Link, LinkMode ni rastreo por fotograma. El padre del Attachment se mueve, y el punto de aparición lo sigue.
- Sin propiedades espaciales que configurar incorrectamente. Attachment no tiene región delimitadora, por lo que el plugin no expone
Shape,Spawn onniHollow. No puedes accidentalmente rellenar una esfera cuando querías una fuente puntual. - El visual es lo que anides dentro. El Render Template de un Attachment es un contenedor — añade un
Decalpara dibujar un sprite plano, añade unBeampara dibujar una estela texturizada entre dos Attachments, añade unPointLightpara un brillo emitido. Cada partícula emitida es un duplicado del contenedor, con los hijos que hayas puesto dentro.
Cuándo no elegir Attachment: cuando el visual que quieres es una malla 3D con dimensionado en tres ejes y renderizado de material. Ese es el territorio de Part; Attachment no tiene gráficos de Color, Transparency, Brightness ni Size.
Propiedades de un vistazo
Sección titulada «Propiedades de un vistazo»La superficie completa, agrupada por sección del panel. Cada fila enlaza al capítulo compartido — Attachment no tiene propiedades específicas del tipo más allá de lo cubierto allí.
Spawning (compartido)
Sección titulada «Spawning (compartido)»| Etiqueta del panel | Atributo de datos | Tipo | Valor por defecto | Qué hace |
|---|---|---|---|---|
| Rate | Rate | number | 10 | Partículas por segundo |
| Lifetime | Lifetime | NumberRange | 1 | Segundos que vive cada partícula, con variación aleatoria |
| SpreadAngle | SpreadAngle | Vector2 | (0, 0) | Cono de desviación aleatoria, en grados |
| Direction | EmissionDirection | enum | Top | Qué cara del marco del Attachment sale por donde vuelan las partículas |
| Position | PosX, PosY, PosZ | tres NumberRange | 0 | Desplazamiento aleatorio desde el Attachment al aparecer |
| Pos. Mode | PosMode | enum | Local | Marco en el que se calculan los desplazamientos de posición |
| Orientation | Orientation | enum | None | Cómo las partículas miran a la cámara o a la velocidad |
| Z-Offset | ZOffset | number | 0 | Sesgo de profundidad de renderizado para capas |
| EmitCount | EmitCount | number | 0 | Cantidad de ráfaga de un solo disparo |
| EmitDelay | EmitDelay | number | 0 | Espera antes de la primera partícula |
| EmitDuration | EmitDuration | number | 0 | Segundos de bucle continuo tras las ráfagas iniciales. 0 omite el bucle |
Movement (compartido)
Sección titulada «Movement (compartido)»| Etiqueta del panel | Atributo de datos | Tipo | Valor por defecto | Qué hace |
|---|---|---|---|---|
| Speed | Speed | NumberSequence | 0 | Magnitud de velocidad durante la vida |
| Acceleration | Acceleration | Vector3 | (0,0,0) | Vector de fuerza constante cada fotograma |
| Drag | Drag | number | 0 | Decaimiento exponencial de la velocidad |
| Dir. Mode | DirMode | enum | RigidLocal | En qué marco se encuentra la dirección |
| Reverse Motion | InvertMotion | boolean | false | Reproduce la trayectoria en sentido inverso |
| Rotation | RotX, RotY, RotZ | tres NumberRange | 0 | Rotación inicial aleatoria por eje al aparecer |
| Rotation Mode | RotMode | enum | OverLife | Si RotSpeed es por vida o por segundo |
| Rotation Speed | RotSpeedX, Y, Z | tres NumberSequence | 0 | Velocidad de rotación por eje |
Linking
Sección titulada «Linking»| Etiqueta del panel | Atributo de datos | Tipo | Valor por defecto | Qué hace |
|---|---|---|---|---|
| Link | LinkSource | enum | None | Qué objetivo dirige el marco de aparición — None, Camera u Object |
| Link Mode | LinkMode | enum | Follow | Cómo se compone la transformación del objetivo — Weld, Follow, Pivot, WeldWithoutRotation |
| Link Dir. | Link (ObjectValue) | instancia | ninguno | El objetivo escogido cuando Link = Object |
Advanced (compartido)
Sección titulada «Advanced (compartido)»| Etiqueta del panel | Atributo de datos | Tipo | Valor por defecto | Qué hace |
|---|---|---|---|---|
| Anim. Steps | TotalKeyFrames | number | 100 | Pasos de muestreo de simulación por partícula |
| Linger | PartLife | number | 0 | Segundos que la partícula permanece tras el Lifetime |
Eso es todo el panel. Sin sección Appearance, sin sección Shape, sin sección Flipbook — están ausentes porque Attachment no tiene un visual propio que colorear, una región delimitadora en la que aparecer, ni una textura por la que avanzar. El visual proviene de lo que anides dentro del Render Template.
El Render Template, para Attachment
Sección titulada «El Render Template, para Attachment»Cuando transformas un Attachment, el plugin crea un hijo RenderTemplate como clon del propio Attachment — con su CFrame restablecido al origen, de modo que el duplicado queda en cero en lugar de donde esté el Attachment fuente en ese momento.
Por sí solo, ese clon no dibuja nada. Los Attachments no se renderizan. Las instancias hijas que pongas dentro del Render Template — Decal, Beam, Trail, PointLight, BillboardGui, cualquier cosa visible — son lo que cada duplicado emitido lleva consigo.
Algunos casos concretos:
- Un sprite plano. Añade un
Decaldentro deRenderTemplate. Cada partícula emitida es ahora un Attachment con un hijo Decal en forma de valla publicitaria. La propiedadTexturedel Decal es la imagen con la que se ven tus partículas. - Una estela de rastro. Añade un
Traildentro deRenderTemplateconectado entre este Attachment y un hermano. Cada Attachment emitido arrastra su propio trail por el espacio — útil para efectos de cometa con chispas. - Un emisor brillante. Añade un
PointLightdentro deRenderTemplate. Cada partícula emite luz mientras viaja. - Múltiples visuales compuestos. Añade un Decal y un PointLight dentro de un Render Template. Cada partícula es un sprite brillante. El Render Template puede contener cualquier número de hijos.
La contrapartida es que los gráficos de Color, Transparency y Brightness no se aplican a nivel de Attachment. Si quieres sprites que se desvanezcan, el desvanecimiento debe estar creado en la instancia hija — por ejemplo, la Transparency del Decal se lee al emitir, pero no se anima durante la vida de la partícula. Para fundidos de color a lo largo de la vida, usa Part en su lugar.
Movimiento relativo al padre en detalle
Sección titulada «Movimiento relativo al padre en detalle»Cada Attachment-partícula emitido se emparenta con el Parent del Attachment original (o con EmitParent si lo has sobreescrito — explicado más abajo). Su CFrame se establece en una posición local de partícula que se suma a cualquier CFrame que tenga el padre en ese fotograma.
El camino del motor es sencillo: en el momento de la emisión, el CFrame local de la partícula se calcula una vez. Cada fotograma, el motor actualiza el CFrame local de la partícula para el movimiento (Speed, Acceleration, Drag actúan sobre él), pero la posición en pantalla es implícitamente el CFrame del padre compuesto con el CFrame local. Mientras el padre (la espada, el miembro, la herramienta) rota y se traslada, las partículas se mueven con él sin coste adicional.
Este es el comportamiento que de otro modo tendrías que configurar manualmente con un emisor Part y Link Mode = Weld. Attachment lo convierte en el valor predeterminado.
EmitParent — elegir dónde se emparentan las partículas
Sección titulada «EmitParent — elegir dónde se emparentan las partículas»Por defecto, las Attachment-partículas emitidas se emparentan con el propio padre del Attachment. Las partículas de un Attachment en la punta de una espada acaban dentro del modelo de la espada.
Si estableces EmitParent en una instancia diferente — una carpeta llamada Effects en workspace, por ejemplo — el plugin reprojecta el CFrame de aparición a través del espacio mundial para que las partículas sigan apareciendo en la ubicación actual del Attachment, pero vivan como hijos del contenedor elegido.
¿Para qué molestarse? Dos razones. Primera, limpieza: si tienes muchos emisores en muchas herramientas y personajes, reunir todas sus partículas en un contenedor hace que la inspección y la limpieza masiva sean más fáciles. Segunda, independencia del padre: las partículas emparentadas dentro de una espada se destruyen cuando la espada se destruye (una animación de muerte, un desequipado de herramienta). Las partículas emparentadas en workspace sobreviven a su fuente. La elección depende de si quieres que las partículas persistan más allá de la fuente.
Direction — cuál es el “arriba” para un Attachment
Sección titulada «Direction — cuál es el “arriba” para un Attachment»El mismo enum que Part: Top, Bottom, Front, Back, Left, Right. Pero para un Attachment, las caras se derivan de la orientación propia del Attachment — su CFrame.UpVector, RightVector, etc. — compuesta con el marco del padre.
Si el Attachment está rotado 90° respecto a su padre, su cara Top apunta de lado desde la perspectiva del padre. Por eso Direction funciona de forma intuitiva: el Top de la punta de la espada es en la dirección que apunta la punta, independientemente de cómo se sostenga la espada.
Linking
Sección titulada «Linking»Attachment expone los mismos controles de Link que Part y Beam: un desplegable Link (None / Camera / Object), un desplegable Link Mode (Weld / Follow / Pivot / WeldWithoutRotation) y un selector de ruta Link Dir. para la instancia objetivo. Todos se comportan exactamente como describe el capítulo Linking.
Para la mayor parte de la creación con Attachments, no necesitas un enlace — las partículas emitidas por el Attachment heredan gratis el CFrame del padre mediante la composición padre-hijo normal de Roblox, lo que ya te da el comportamiento de aparición con seguimiento del padre que de otro modo cablearías con Link Mode = Weld. Deja Link en None y el Attachment se comporta como esperarías.
Recurre a un enlace explícito cuando quieras que las partículas sigan algo distinto al propio padre del Attachment. Dos casos comunes:
- Efectos atados a la cámara — establece
Link = Cameray el marco de aparición del Attachment seguirá la cámara del jugador, útil para destellos ambientales en espacio de pantalla o trails en primera persona que siempre deben sentirse «delante» del espectador. - Seguimiento entre rigs — establece
Link = Objecty elige una instancia no relacionada medianteLink Dir.. Un Attachment dentro de una espada que debe emitir partículas siguiendo la cabeza del personaje, ignorando el movimiento de la espada, es el ejemplo canónico.
Un cambio de comportamiento que merece la pena conocer: en versiones anteriores del plugin, un Attachment con Link = None recurría silenciosamente a usar su propio padre como objetivo de enlace. Ese fallback ya no existe. Con Link = None, el Attachment usa emisión pura relativa al padre (el comportamiento por defecto del Attachment) — no finge estar enlazado a su padre. Si quieres semántica explícita de enlace al padre (p. ej. para que Link Mode = Pivot ignore la rotación del padre), establece Link = Object y elige el padre tú mismo.
Vale la pena saber
Sección titulada «Vale la pena saber»Algunas peculiaridades específicas de Attachment.
Un Attachment huérfano vuelve al espacio mundial. Si el Attachment está emparentado directamente con workspace (sin ancestro Part o Model), no hay marco relativo al padre con el que componerse — el motor trata el CFrame del Attachment como espacio mundial y las partículas aparecen allí directamente. Esto funciona, pero la ventaja del seguimiento del padre desaparece. Si quieres emisión en espacio mundial sin seguimiento del padre, un emisor Part es más honesto sobre esa elección.
El Render Template está vacío por defecto. Transformar un Attachment no pre-rellena el Render Template con nada que ver — tienes que añadir una instancia visual dentro. Un usuario primerizo podría transformar un Attachment, establecer Rate = 100, y ver… ninguna partícula. Están emitiéndose; simplemente no tienen visual. Abre el Attachment en el Explorer de Studio, encuentra el RenderTemplate y añade un Decal o cualquier visual que encaje con tu efecto.
Los controles de Link son de primera clase. El panel de propiedades de Attachment expone las filas Link, Link Mode y Link Dir. igual que Part y Beam — consulta la sección Linking más arriba. (Versiones anteriores del plugin ocultaban estas filas en Attachment y recurrían silenciosamente al padre como objetivo de enlace; ya no es así.)
El caso límite de Pos. Mode = RigidLocal. Si estableces RigidLocal en un Attachment con rangos PosX/Y/Z, el desplazamiento de posición se muestrea en espacio local y luego se fija al espacio mundial al aparecer. Combinado con la rotación del padre en pleno vuelo, esto produce partículas que no rotan con el padre después de aparecer — el punto de aparición sigue al padre, pero el cono de dispersión queda congelado en espacio mundial. Útil para efectos de “ducha” donde la fuente se mueve pero las partículas se desplazan por su cuenta.
Qué sigue
Sección titulada «Qué sigue»Attachment fue el más sencillo de los tipos de workspace — Part con el cableado espacial integrado. El siguiente tipo es más interesante: un Beam no vuela a ningún sitio. Conecta dos Attachments con una línea texturizada y anima el aspecto de esa línea a lo largo del tiempo. El modelo de movimiento es algo que no hemos visto aún — la geometría no se mueve, la textura sí.