Sistemas de partículas (2D)

Introducción

Se proporciona un sistema de partículas simple (pero lo suficientemente flexible para la mayoría de los usos). Los sistemas de partículas se utilizan para simular efectos físicos complejos como chispas, fuego, partículas mágicas, humo, niebla, etc.

La idea es que una «partícula» se emite a un intervalo fijo y con una vida útil fija. Durante su vida útil, cada partícula tendrá el mismo comportamiento básico. Lo que hace que cada partícula sea diferente y proporciona un aspecto más orgánico es la «aleatoriedad» asociada a cada parámetro. En esencia, crear un sistema de partículas significa establecer parámetros físicos básicos y luego agregarles aleatoriedad.

Particle nodes

Godot provides two different nodes for 2D particles, class_Particles2D and class_CPUParticles2D. Particles2D is more advanced and uses the GPU to process particle effects, but that limits it to higher end graphics API, and in our case to the GLES3 renderer. For projects using the GLES2 backend, CPUParticles2D is a CPU-driven option with near feature parity with Particles2D, but lesser performance. While Particles2D is configured via a class_ParticlesMaterial (and optionally with a custom shader), the matching options are provided via node properties in CPUParticles2D (with the exception of the trail settings). You can convert a Particles2D node into a CPUParticles2D node by clicking on the node in the inspector, and selecting «Convert to CPUParticles2D» in the «Particles» menu of the toolbar.

../../_images/particles_convert.png

The rest of this tutorial is going to use the Particles2D node. First, add a Particles2D node to your scene. After creating that node you will notice that only a white dot was created, and that there is a warning icon next to your Particles2D node in the inspector. This is because the node needs a ParticlesMaterial to function.

ParticlesMaterial

Para agregar un material de proceso al nodo de partículas, ve a Process Material en el panel del inspector. Haz clic en la casilla junto al material y, en el menú desplegable, selecciona Nuevo ParticlesMaterial.

../../_images/particles_material.png

Su nodo Particles2D ahora debería estar emitiendo puntos blancos hacia abajo.

../../_images/particles1.png

Textura

Un sistema de partículas utiliza una sola textura (en el futuro, esto podría extenderse a texturas animadas mediante spritesheet). La textura se establece a través de la relevante propiedad texture:

../../_images/particles2.png

Parámetros de Tiempo (Time)

Lifetime (Tiempo de vida)

El tiempo en segundos que cada partícula estará viva. Cuando termina su tiempo de vida, se crea una nueva partícula para reemplazarla.

Lifetime: 0.5

../../_images/paranim14.gif

Lifetime: 4.0

../../_images/paranim15.gif

One Shot (Una Vez)

Cuando está habilitado, un nodo Particles2D emitirá todas sus partículas una vez y después nunca más.

Preprocess (Preproceso)

Los sistemas de partículas comienzan con cero partículas emitidas, luego comienzan a emitir. Esto puede ser un inconveniente al cargar una escena y sistemas de partículas como una antorcha, niebla, etc. ya que comienzan a emitir en el momento en que entras. El preproceso se usa para permitir que el sistema procese un número determinado de segundos antes de que se dibuje por primera vez.

Speed Scale (Escala de Velocidad)

La escala de velocidad tiene un valor predeterminado de 1, y se usa para ajustar la velocidad de un sistema de partículas. Disminuir el valor hará que las partículas se vuelvan más lentas, aumentar el valor hará que las partículas sean mucho más rápidas.

Explosiveness (Explosividad)

Si el tiempo de vida es 1 y hay diez partículas, significa que se emitirá una partícula cada 0.1 segundos. El parámetro de explosividad cambia esto y obliga a las partículas a emitirse todas al mismo tiempo. Los rangos son:

  • 0: Emite partículas a intervalos regulares (valor predeterminado).
  • 1: Emite todas las partículas simultáneamente.

Los valores intermedios también están permitidos. Esta característica es útil para crear explosiones o ráfagas repentinas de partículas:

../../_images/paranim18.gif

Randomness (Aleatoriedad)

Todos los parámetros de física se pueden aleatorizar. Los valores aleatorios varían de 0 a 1. La fórmula para aleatorizar un parámetro es:

initial_value = param_value + param_value * randomness

Fixed FPS (FPS Fijo)

Esta configuración se puede usar para configurar el sistema de partículas para que se renderice a un FPS(Fotogramas Por Segundo) fijo. Por ejemplo, cambiar el valor a 2 hará que las partículas se rendericen a 2 fotogramas por segundo. Tenga en cuenta que esto no ralentiza el sistema de partículas en sí.

Fract Delta

Esto se puede usar para activar o desactivar Fract Delta.

Parámetros de Dibujo (Drawing)

Visibility Rect (Rectángulo de Visibilidad)

El rectángulo de visibilidad controla la visibilidad del sistema de partícuas. Si el rectángulo está fuera del Viewport, el motor no dibujará en pantalla las particulas del sistema.

Los valores W y H controlan el ancho y alto del rectángulo de visibilidad. Los valores X y Y controlan la posición de la esquina superior izquierda del rectángulo de visibilidad, relativo al emisor de partículas.

Puedes hacer que Godot genere un rectángulo de visibilidad automáticamente usando la barra de herramientas en la parte superior de la vista 2D. Para esto, selecciona el nodo Particles2D y haz clic en ``Partículas > Generar rectángulo de visibilidad ``. Godot simulará el nodo Particles2D emitiendo partículas por algunos segundos y creará un rectángulo que se ajuste a la superficie ocupada por las partículas.

Puedes controlar la duración de la emisión con la opción Tiempo de generación (seg). El valor máximo es de 25 segundos, si necesitas más tiempo para que tus partículas se muevan, puedes cambiar temporalmente la propiedad preprocess en el nodo Particles2D.

Coordenadas Locales

Por defecto esta opción está activada, y significa que el espacio al que se emiten las partículas es relativo al nodo. Si se mueve el nodo, todas las partículas se mueven con él:

../../_images/paranim20.gif

Si se desactiva, las partículas se emitirán en el espacio global, lo que significa que si el nodo se mueve, las partículas ya emitidas no se verán afectadas:

../../_images/paranim21.gif

Draw Order (Orden de Dibujo)

Esto controla el orden en el que se dibujan las partículas individuales. Index significa que las partículas son dibujadas de acuerdo a su orden de emisión (por defecto). Lifetime significa que se dibujan en el orden de la vida restante.

Ajustes de ParticlesMaterial

Spread (Propagación)

Este parámetro es el ángulo en grados que se añadirá aleatoriamente en cualquier dirección a la base Direction. Un spread de 180 emitirá en todas las direcciones (+/- 180).

../../_images/paranim3.gif

Gravity (Gravedad)

La gravedad aplicada a cada partícula.

../../_images/paranim7.gif

Initial Velocity (Velocidad Inicial)

Initial velocity is the speed at which particles will be emitted (in pixels/sec). Speed might later be modified by gravity or other accelerations (as described further below).

../../_images/paranim4.gif

Angular Velocity (Velocidad Angular)

Angular velocity es la velocidad angular inicial aplicada a las partículas.

Spin Velocity (Velocidad de Giro)

Spin velocity es la velocidad a la que las partículas giran alrededor de su centro (en grados/segundo).

../../_images/paranim5.gif

Orbit Velocity (Velocidad de la Órbita)

Orbit velocity se utiliza para hacer que las partículas giren alrededor de su centro.

../../_images/paranim6.gif

Linear Acceleration (Aceleración Lineal)

La aceleración lineal aplicada a cada partícula.

Radial Acceleration (Aceleración Radial)

Si esta aceleración es positiva, las partículas se aceleran lejos del centro. Si es negativo, se atraen hacia él.

../../_images/paranim8.gif

Tangential Acceleration (Aceleración Tangencial)

Esta aceleración utilizará el vector tangente hasta el centro. La combinación con la aceleración radial puede producir buenos efectos.

../../_images/paranim9.gif

Damping (Amortiguación)

Damping aplica fricción a las partículas, forzándolas a detenerse. Es especialmente útil para chispas o explosiones, que generalmente comienzan con una alta velocidad lineal y luego se detienen a medida que se desvanecen.

../../_images/paranim10.gif

Angle (Ángulo)

Determines the initial angle of the particle (in degrees). This parameter is mostly useful randomized.

../../_images/paranim11.gif

Escala

Determina la escala inicial de las partículas.

../../_images/paranim12.gif

Color

Permite cambiar el color de las partículas emitidas.

Hue variation (Variación de tono)

El valor de Variation establece la variación de tono inicial aplicada a cada partícula. El valor Variation Random controla el ratio de aleatoriedad de la variación de tono.

Formas de Emisión

ParticlesMaterials allow you to set an Emission Mask, which dictates the area and direction in which particles are emitted. These can be generated from textures in your project.

Ensure that a ParticlesMaterial is set, and the Particles2D node is selected. A «Particles» menu should appear in the Toolbar:

../../_images/emission_shapes1.png

Open it and select «Load Emission Mask»:

../../_images/emission_shapes2.png

Then select which texture you want to use as your mask:

../../_images/emission_shapes3.png

A dialog box with several settings will appear.

Máscara de Emisión

Three types of emission masks can be generated from a texture:

  • Solid Pixels: Particles will spawn from any area of the texture, excluding transparent areas.
../../_images/emission_mask_solid.gif
  • Border Pixels: Particles will spawn from the outer edges of the texture.
../../_images/emission_mask_border.gif
  • Directed Border Pixels: Similar to Border Pixels, but adds extra information to the mask to give particles the ability to emit away from the borders. Note that an Initial Velocity will need to be set in order to utilize this.
../../_images/emission_mask_directed_border.gif

Colores de Emisión

Capture from Pixel will cause the particles to inherit the color of the mask at their spawn points.

Una vez que hagas clic en «OK», la máscara se generará y se ajustará a ParticlesMaterial, en la sección Emission Shape:

../../_images/emission_shapes4.png

All of the values within this section have been automatically generated by the «Load Emission Mask» menu, so they should generally be left alone.

Nota

An image should not be added to Point Texture or Color Texture directly. The «Load Emission Mask» menu should always be used instead.