Particle System
Añade efectos de partículas como fuego, lluvia, chispas y auras mágicas a tu escena
Los sistemas de partículas te permiten crear efectos visuales dinámicos emitiendo y animando grandes cantidades de pequeños sprites. Úsalos para crear fuego, humo, lluvia, nieve, chispas, auras mágicas, explosiones y muchos otros efectos que serían imprácticos de lograr con meshes estáticos.
Agregar un sistema de partículas
Para agregar un sistema de partículas a tu escena, crea una entidad y adjunta el ParticleSystem componente a ella.
import { engine, Transform, ParticleSystem } from '@dcl/sdk/ecs'
import { Vector3 } from '@dcl/sdk/math'
const emitter = engine.addEntity()
Transform.create(emitter, {
position: Vector3.create(8, 1, 8),
})
ParticleSystem.create(emitter, {})Sin ninguna propiedad configurada, el componente usa todos los valores predeterminados: un emisor puntual que dispara 10 partículas por segundo, con una vida útil de 5 segundos para cada partícula.
Formas del emisor
La forma del emisor determina dónde aparecen las partículas. Hay cuatro formas disponibles mediante las ParticleSystem.Shape funciones auxiliares.
Punto
Las partículas aparecen desde un único punto (la posición de la entidad). Este es el valor predeterminado cuando no se especifica ninguna forma.
Esfera
Las partículas aparecen desde la superficie o el interior de una esfera.
Cono
Las partículas aparecen desde la base de un cono y viajan hacia afuera en la dirección del cono. angle es el semiángulo en grados; radius es el radio de la base en metros. Para orientar la dirección del cono, establece la rotación de la Transform.
Caja
Las partículas aparecen desde cualquier lugar dentro de un volumen de caja.
Propiedades de emisión
Controla cuántas partículas se crean y cuánto tiempo viven.
rate
10
Partículas emitidas por segundo (continuo).
maxParticles
1000
Límite estricto de partículas activas simultáneas.
lifetime
5
La vida útil de cada partícula en segundos.
active
true
Si el sistema está emitiendo nuevas partículas activamente.
Movimiento
Gravedad
La gravity la propiedad es un multiplicador aplicado a la gravedad de la escena (-9.81 m/s²). Establécelo en 0 para hacer que las partículas floten en su lugar, en un valor negativo para empujarlas hacia arriba, o en un valor positivo para acelerarlas hacia abajo.
Velocidad inicial
initialVelocitySpeed es un FloatRange que establece un mínimo y un máximo para el rango de velocidad aleatoria con el que se lanza cada partícula (en m/s). Ambos valores tienen como valor predeterminado 1.
Fuerza adicional
Un vector de fuerza constante aplicado a todas las partículas en cada frame, además de la gravedad. Útil para efectos de viento o magnéticos.
Limitación de velocidad
Usa limitVelocity para limitar la velocidad máxima de las partículas y, opcionalmente, amortiguar su exceso de velocidad en cada frame.
Propiedades visuales
Color
initialColor establece el color de la partícula al nacer, elegido aleatoriamente dentro del rango dado. colorOverTime hace que el color de la partícula transicione gradualmente desde el inicio hasta el final valor a lo largo de la vida útil de la partícula. Ambos aceptan un ColorRange con un inicio y final valor.
Ten en cuenta que el cuarto valor de un Color4 es el alpha. Si estableces el color final con un alpha de 0, las partículas se desvanecerán gradualmente y se volverán invisibles, lo que a menudo es un buen efecto.
Tamaño
initialSize y sizeOverTime son FloatRange valores. initialSize controla la escala de la partícula al nacer, elegida aleatoriamente dentro del rango dado. sizeOverTime hace que la escala de la partícula transicione gradualmente desde el inicio hasta el final valor a lo largo de la vida útil de la partícula. Un valor de 1 es igual al tamaño original de la textura.
📔 Nota: El scale de la Transform de la entidad no afecta la escala de las partículas.
Texture
Por defecto, las partículas se renderizan como cuadrados blancos. Proporciona una texture para usar una imagen personalizada.
Modo de mezcla
Controla cómo se compone el color de la partícula con la escena detrás de ella.
ParticleSystemBlendMode.PSB_ALPHA
Transparencia estándar (predeterminado).
ParticleSystemBlendMode.PSB_ADD
Mezcla aditiva: las partículas iluminan la escena. Buena para fuego y resplandores.
ParticleSystemBlendMode.PSB_MULTIPLY
Multiplica el color de la partícula con la escena detrás de ella.
Billboard
Cuando billboard es true (el valor predeterminado), cada partícula siempre mira hacia la cámara independientemente de la orientación del emisor. Establécelo en false para partículas que deban girar en el espacio 3D.
Rotación
Rotación inicial y rotación con el tiempo
initialRotation es la orientación de una partícula cuando aparece. rotationOverTime es una velocidad angular por eje aplicada cada segundo. Ambas aceptan un Quaternion.
📔 Nota: Si billboard se establece en true, entonces las partículas solo rotarán en un eje, manteniendo siempre su orientación hacia la cámara.
Face travel direction
Cuando faceTravelDirection es true, cada partícula gira automáticamente para apuntar en su dirección de movimiento, como un asteroide o una hoja cayendo por el aire.
📔 Nota: Si faceTravelDirection es true, el valor de billboard se ignora.
Animación de sprite sheet
Puedes animar partículas tratando una texture como una cuadrícula de fotogramas de animación. Especifica la cantidad de columnas y filas en la hoja y la velocidad de reproducción.
Control de reproducción
El sistema de partículas puede estar en uno de tres estados controlados por playbackState.
ParticleSystemPlaybackState.PS_PLAYING
Emitiendo activamente (predeterminado).
ParticleSystemPlaybackState.PS_PAUSED
Congela todas las partículas actuales en su lugar y detiene la emisión.
ParticleSystemPlaybackState.PS_STOPPED
Detiene la emisión y elimina todas las partículas existentes.
Loop y prewarm
Por defecto, el sistema se repite indefinidamente. Establece loop a false para un efecto de una sola vez que se detiene automáticamente después de que todas las partículas hayan desaparecido.
Establece prewarm a true (requiere loop: true) para simular el sistema como si hubiera estado funcionando desde el principio, de modo que las partículas ya llenen la escena cuando el jugador la vea por primera vez.
Emisión por bursts
Los bursts te permiten emitir una gran cantidad de partículas en momentos específicos en lugar de a una tasa constante. Son útiles para explosiones, fuegos artificiales u otros eventos de una sola vez.
Un único sistema de partículas puede pasar por un ciclo con varios bursts, incluso con intervalos o probabilidades variables, para que resulte más natural.
Para un efecto de fuegos artificiales en bucle con bursts escalonados:
Espacio de simulación
Controla si las partículas se mueven en relación con el emisor (PSS_LOCAL, predeterminado) o permanecen fijas en coordenadas del mundo después de aparecer (PSS_WORLD).
Usa PSS_WORLD para un emisor en movimiento que debe dejar una estela detrás de sí (por ejemplo, un asteroide o un cohete).
Rendimiento
El engine aplica un presupuesto de partículas por escena y reducirá automáticamente las tasas de emisión en todos los sistemas de partículas activos de la escena si el recuento total de partículas superara el límite. Planifica tus escenas en consecuencia:
Prefiere menos sistemas, pero visualmente impactantes, en lugar de muchos de bajo impacto.
Usa
maxParticlespara limitar los sistemas individuales.Usa
activeoplaybackStatepara desactivar los sistemas que están fuera de pantalla o fuera de alcance.Cortos
lifetimelos valores mantienen el recuento de partículas activas más bajo que una alta emisiónratepor sí sola sugiere.
El engine limita la cantidad máxima de partículas que se renderizan en cualquier momento a 1000. Si estás emitiendo más partículas que eso, puede que no las estés viendo todas.
También ten en cuenta que un jugador solo puede ver las partículas mientras esté dentro de tu escena. Los jugadores que estén mirando la escena desde afuera no verán ninguna partícula hasta que entren.
Particle Lab
Entra al mundo ParticleLab.dcl.eth para experimentar con diferentes sistemas de partículas. Cuando te acerques a un sistema de partículas, la UI mostrará todos los campos disponibles; podrás ajustarlos en vivo sin necesidad de recargar la escena. Cuando estés satisfecho, haz clic en el Copy botón para copiar el código de ese sistema de partículas en tu portapapeles.
Última actualización