Shifter
Tienes diez emisores en fila y todos necesitan que su RotZ se desplace 30 grados. O quieres que el EmitDelay de cada emisor aumente 0,1 segundos para una cascada escalonada. O quieres una reducción plana del 50% en el número de partículas de toda una escena para un modo de gráficos bajos.
Cada uno de estos casos es un desplazamiento aritmético uniforme aplicado a muchos emisores. La herramienta Shifter te permite aplicar dichos desplazamientos en una sola operación, con la misma interfaz de toggles por propiedad que Clipboard, pero con cuatro botones aritméticos en lugar de copiar/pegar.
El diseño del panel
Sección titulada «El diseño del panel»Similar a Clipboard, con diferencias clave:
- Botones de operación en la parte superior:
+,-,×,÷(en lugar de Copiar/Pegar). - Campo de valor — un campo de texto que recibe el operando de la operación.
- Toggle Scale Envelope — para propiedades de gráfica, controla si el envelope (rango de aleatorización por partícula) se escala junto con el valor.
- Cuadro de búsqueda para filtrar la lista de propiedades.
- Toggles de propiedad — la misma lista de casillas por propiedad que Clipboard.
Para usarlo: selecciona emisores, escribe un valor (por ejemplo, 0.5), marca los toggles de propiedad sobre los que quieras operar y haz clic en un botón de operación. La operación se aplica a las propiedades elegidas de cada emisor seleccionado.
Las cuatro operaciones
Sección titulada «Las cuatro operaciones»+(suma) — añade el valor de entrada a cada propiedad. Para números, suma escalar. Para NumberRanges, tanto Min como Max reciben la suma (se preserva Min ≤ Max). Para NumberSequences, cada valor de keypoint recibe la suma. Para Vector3 / Vector2 / UDim2, todos los componentes reciben la suma.-(resta) — igual que la suma, pero restando el valor.×(multiplicación) — escala cada propiedad por el valor de entrada. Min y Max del rango se multiplican. Los keypoints de la secuencia se multiplican (el envelope opcionalmente también — ver más abajo). Todos los componentes del vector se multiplican.÷(división) — divide cada propiedad por el valor de entrada. Se omite si la entrada es0.
Para cada operación, el plugin recorre los elementos seleccionados, lee el valor actual de la propiedad (mediante el lector con conocimiento del tipo), aplica la operación y escribe el resultado. Algunas propiedades tienen restricciones de no negatividad incorporadas (Drag se limita a ≥ 0, Width0 / Width1 de beam a ≥ 0, etc.); el resultado se ajusta a esos límites tras el cálculo. La mayoría de las propiedades de tipo gráfica — incluyendo Speed — no se limitan a cero: una gráfica de Speed con valores negativos invierte la dirección de las partículas (explicado en Motion → Speed), por lo que restar hasta pasar de cero es una operación válida, no un error.
Manejo de Vector y UDim2
Sección titulada «Manejo de Vector y UDim2»Para propiedades de tipo vector, todos los componentes reciben la misma operación:
Acceleration(Vector3):+ 5añade5a cada uno de X, Y, Z. Así,(0, -50, 0)se convierte en(5, -45, 5).SpreadAngle(Vector2):× 2duplica tanto el componente X como el Y.Position/Size(UDim2):× 2duplica los componentes Scale y Offset de ambos ejes.+ 5añade5solo a Offset (no a Scale, ya que Scale es fraccional y+5 en scaleraramente corresponde a la intención — los desplazamientos aditivos en UDim2 afectan al offset de píxeles absoluto, no a la escala relativa).
Si quieres desplazamientos asimétricos por eje (solo X, solo Y), Shifter no lo admite directamente. Edita la propiedad en el panel para ese caso.
Toggle Scale Envelope
Sección titulada «Toggle Scale Envelope»Para propiedades NumberSequence (gráficas), cada keypoint tiene tanto un valor como un envelope opcional (el rango de variación aleatoria por partícula alrededor del valor). Cuando escalas una gráfica con × 2, ¿qué debería ocurrirle al envelope?
- Scale Envelope = activado (por defecto): tanto el valor como el envelope se escalan juntos. Un keypoint con valor
5y envelope1se convierte en valor10y envelope2. La escala visual de la gráfica se duplica, incluyendo la aleatoriedad por partícula. - Scale Envelope = desactivado: solo se escala el valor. El keypoint se convierte en valor
10, envelope1. La banda de aleatoriedad permanece igual en términos absolutos; simplemente cubre una fracción menor del nuevo valor.
Para la mayoría de los usos, deja Scale Envelope activado. Desactivarlo es correcto cuando quieres que la forma de la gráfica se escale pero que la cantidad absoluta de variación permanezca fija — útil para hacer un efecto más vívido sin que la variación se vuelva más caótica.
Para operaciones no multiplicativas (+, -), Scale Envelope no tiene efecto — los desplazamientos aditivos no tienen sentido para los rangos de envelope.
Manejo de cadenas en Trail Duration
Sección titulada «Manejo de cadenas en Trail Duration»Trail.EmitDuration se almacena como cadena (el formato "min,max" explicado en el capítulo de Trail). Shifter analiza la cadena, aplica la operación a cada valor y escribe el resultado de vuelta como cadena.
Así, EmitDuration = "5,2" desplazado con × 0.5 se convierte en "2.5,1". Desplazado con + 0.5 se convierte en "5.5,2.5" (ambos extremos reciben la suma). Desplazado con ÷ 0 se omite (protección contra división por cero).
Qué tipos de propiedad se pueden omitir
Sección titulada «Qué tipos de propiedad se pueden omitir»Shifter solo opera sobre propiedades numéricas y vectoriales. Omite:
- Gráficas
ColorSequence— la aritmética de color no tiene una interpretación limpia de+. Usa Hue en su lugar para desplazamientos de color. - Propiedades booleanas — los toggles no se pueden sumar.
- Propiedades Enum —
Material,RotMode,EmissionDirection. Tienen valores permitidos específicos; la aritmética no aplica. - Cadenas de ID de activo de imagen / textura — son identificadores, no números.
- La estructura de carpeta Beam GraphBlender (basada en estados; la aritmética sobre la estructura de un estado no tiene sentido).
Las propiedades excluidas aparecen en la lista de toggles en gris, o no aparecen en absoluto según el filtro de visibilidad del panel.
Compatibilidad nativa con PE y Trail
Sección titulada «Compatibilidad nativa con PE y Trail»Shifter opera sobre instancias nativas (no transformadas) de ParticleEmitter y Trail. Las propiedades nativas de PE admitidas son: Lifetime (NumberRange), Rate (número), Speed (NumberRange), RotSpeed (NumberRange), FlipbookFramerate, Acceleration (Vector3), Size (NumberSequence), Squash (NumberSequence), Transparency (NumberSequence). Para Trail nativo: Lifetime (número), WidthScale (NumberSequence), MinLength, MaxLength, TextureLength, atributo EmitDuration.
La misma aritmética, el mismo filtrado por toggles de propiedad, las mismas reglas de coerción.
Cuándo usar Shifter
Sección titulada «Cuándo usar Shifter»Shifter es la herramienta adecuada cuando:
- Quieres un desplazamiento aritmético uniforme en propiedades específicas de muchos emisores.
- El desplazamiento es mecánico —
+0.1,×0.5, etc. — no un cambio porcentual o proporcional relativo a los valores actuales. - Quieres un control preciso sobre qué propiedades se ven afectadas (por toggle).
Compara con:
- Resize / Retime — sliders de escala logarítmica proporcional para escalado espacial / temporal. Shifter es aritmética por propiedad; Resize / Retime son globales por categoría de herramienta.
- Hue — desplazamientos específicos de color en espacio HSV. Shifter no maneja colores; Hue sí.
- Clipboard — copiar/pegar valores específicos entre emisores. Shifter transforma valores existentes; Clipboard los reemplaza.
Para un cambio de “aumentar el emit-delay de cada emisor 0,1 segundos”, Shifter es exactamente la herramienta correcta. Para “duplicar el tamaño de cada emisor”, usa Resize. Para “desplazar toda la paleta hacia el rojo”, usa Hue.
Qué sigue
Sección titulada «Qué sigue»Utilities — cuatro herramientas de utilidad que no modifican propiedades. Scan encuentra emisores con problemas de formato, Insert empaqueta el módulo de tiempo de ejecución, Emit Code genera fragmentos de Lua, y el Optimization Indicator muestra una puntuación de coste en tiempo real para la selección actual.