For the complete documentation index, see llms.txt. This page is also available as Markdown.

Particle System

Añade particle effects como fuego, lluvia, chispas y auras mágicas a tu scene

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áticas.

Agregar un sistema de partículas

Para agregar un sistema de partículas a tu escena, crea una entity y adjunta el ParticleSystem component 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 propiedades configuradas, el component usa todos los valores predeterminados: un emisor puntual que lanza 10 partículas por segundo hacia arriba, con una vida útil de la partícula de 5 segundos.

Formas del emisor

La forma del emisor determina dónde aparecen las partículas. Hay cuatro formas disponibles mediante los ParticleSystem.Shape helpers.

Punto

Las partículas aparecen desde un solo punto (la posición de la entity). 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 se desplazan 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, configura la rotación del 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.

Propiedad
Predeterminado
Descripción

rate

10

Partículas emitidas por segundo (continuo).

maxParticles

1000

Límite máximo de partículas vivas simultáneamente.

lifetime

5

Vida útil de cada partícula en segundos.

active

true

Si el sistema está emitiendo activamente nuevas partículas.

Movimiento

Gravedad

El gravity property 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 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 velocidad excedente en cada frame.

Propiedades visuales

Color

initialColor establece el color de la partícula al nacer; colorOverTime establece su color al final de su vida útil. Ambos aceptan un ColorRange con un valor from y to el color real de nacimiento/muerte se elige aleatoriamente dentro de ese rango.

Ten en cuenta que el cuarto valor en un Color4 es el alpha. Si configuras el color final como uno con un alpha de 0, las partículas se desvanecerán gradualmente y se volverán invisibles, lo cual suele ser un buen efecto.

Tamaño

initialSize y sizeOverTime son FloatRange values que controlan la escala de la partícula al nacer y al morir, respectivamente. Un valor de 1 es igual al tamaño original de la textura.

Textura

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.

Valor
Descripción

ParticleSystemBlendMode.PSB_ALPHA

Transparencia estándar (predeterminado).

ParticleSystemBlendMode.PSB_ADD

Mezcla aditiva — las partículas iluminan la escena. Bueno para fuego y brillos.

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 a lo largo del tiempo

initialRotation es la orientación de una partícula cuando aparece. rotationOverTime es una velocidad angular por eje aplicada cada segundo. Ambos aceptan un Quaternion.

Orientar hacia la dirección de movimiento

Cuando faceTravelDirection es true, cada partícula rota automáticamente para apuntar en su dirección de movimiento, como un asteroide o una hoja cayendo por el aire.

Animación de sprite sheet

Puedes animar partículas tratando una texture como una cuadrícula de frames de animación. Especifica el número de columnas y filas en la sheet 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.

Valor
Descripción

ParticleSystemPlaybackState.PS_PLAYING

Emitiendo activamente (predeterminado).

ParticleSystemPlaybackState.PS_PAUSED

Congela todas las partículas actuales en su lugar y deja de emitir.

ParticleSystemPlaybackState.PS_STOPPED

Deja de emitir y elimina todas las partículas existentes.

Loop y prewarm

Por defecto, el sistema se repite indefinidamente. Configura loop to false para un efecto de una sola vez que se detenga automáticamente después de que todas las partículas hayan muerto.

Configura prewarm to true (requiere loop: true) para simular el sistema como si hubiera estado ejecutándose desde el inicio, de modo que las partículas ya llenen la escena cuando el jugador la vea por primera vez.

Emisión por ráfagas

Las ráfagas 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 solo sistema de partículas puede pasar por un ciclo con varias ráfagas, incluso con intervalos o probabilidades variables para que se sienta más natural.

Para un efecto de fuegos artificiales en loop con ráfagas escalonadas:

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 systems con impacto visual alto en lugar de muchos con poco impacto.

  • Usa maxParticles para limitar systems individuales.

  • Usa active o playbackState para deshabilitar systems que estén fuera de la pantalla o fuera de alcance.

  • Los valores lifetime cortos mantienen el recuento de partículas vivas más bajo que una emisión alta rate por sí sola sugeriría.

El engine limita el número máximo de partículas que se renderizan en cualquier momento a 1000. Si estás emitiendo más partículas que eso, es posible que no las estés viendo todas.

Ten en cuenta también 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 en el 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; puedes ajustarlos en vivo sin necesidad de recargar la escena. Cuando estés satisfecho, haz clic en el Copy button para copiar el código de ese sistema de partículas a tu portapapeles.

Última actualización