Els efectes de partícules són una part fonamental en la creació de videojocs, ja que permeten simular fenòmens naturals com el foc, fum, explosions, pluja, neu, i molts altres. Aquest mòdul se centrarà en la comprensió i implementació d'aquests efectes utilitzant sistemes de partícules.

Conceptes Bàsics dels Sistemes de Partícules

Què és un Sistema de Partícules?

Un sistema de partícules és una tècnica de gràfics per ordinador que utilitza moltes petites entitats (partícules) per simular fenòmens difusos. Cada partícula té propietats com la posició, velocitat, vida útil, color, i mida.

Propietats de les Partícules

  • Posició: Coordenades en l'espai on es troba la partícula.
  • Velocitat: Direcció i velocitat a la qual es mou la partícula.
  • Vida útil: Temps durant el qual la partícula existeix abans de desaparèixer.
  • Color: Color de la partícula, que pot canviar amb el temps.
  • Mida: Dimensions de la partícula, que també poden variar amb el temps.

Components d'un Sistema de Partícules

  • Emissor: Punt o regió des d'on es generen les partícules.
  • Actualitzador: Mecanisme que modifica les propietats de les partícules al llarg del temps.
  • Renderitzador: Component que dibuixa les partícules a la pantalla.

Implementació d'Efectes de Partícules

Exemple: Simulació de Foc

Pas 1: Configuració de l'Emissor

// Unity C#
public class FireEmitter : MonoBehaviour
{
    public ParticleSystem fireParticleSystem;

    void Start()
    {
        var emission = fireParticleSystem.emission;
        emission.rateOverTime = 100; // Genera 100 partícules per segon

        var main = fireParticleSystem.main;
        main.startLifetime = 2.0f; // Cada partícula viu durant 2 segons
        main.startSpeed = 5.0f; // Velocitat inicial de les partícules
        main.startSize = 0.5f; // Mida inicial de les partícules
        main.startColor = Color.red; // Color inicial de les partícules
    }
}

Pas 2: Actualització de les Partícules

void Update()
{
    var main = fireParticleSystem.main;
    main.startColor = new ParticleSystem.MinMaxGradient(Color.red, Color.yellow); // Canvia el color de les partícules amb el temps
}

Pas 3: Renderització de les Partícules

void OnRenderObject()
{
    fireParticleSystem.Play(); // Dibuixa les partícules a la pantalla
}

Exemple: Simulació de Pluja

Pas 1: Configuració de l'Emissor

// Unity C#
public class RainEmitter : MonoBehaviour
{
    public ParticleSystem rainParticleSystem;

    void Start()
    {
        var emission = rainParticleSystem.emission;
        emission.rateOverTime = 500; // Genera 500 partícules per segon

        var main = rainParticleSystem.main;
        main.startLifetime = 4.0f; // Cada partícula viu durant 4 segons
        main.startSpeed = 10.0f; // Velocitat inicial de les partícules
        main.startSize = 0.1f; // Mida inicial de les partícules
        main.startColor = Color.blue; // Color inicial de les partícules
    }
}

Pas 2: Actualització de les Partícules

void Update()
{
    // No cal actualitzar les partícules per a la pluja, ja que el seu comportament és constant
}

Pas 3: Renderització de les Partícules

void OnRenderObject()
{
    rainParticleSystem.Play(); // Dibuixa les partícules a la pantalla
}

Exercicis Pràctics

Exercici 1: Simulació de Fum

  1. Configura un emissor de partícules per simular fum.
  2. Ajusta les propietats de les partícules per fer que el fum sembli realista (vida útil més llarga, velocitat més baixa, color gris).
  3. Implementa l'actualització de les partícules per fer que el color canviï de gris fosc a gris clar amb el temps.

Exercici 2: Simulació d'Explosió

  1. Configura un emissor de partícules per simular una explosió.
  2. Ajusta les propietats de les partícules per fer que l'explosió sembli realista (vida útil curta, velocitat alta, colors variats).
  3. Implementa l'actualització de les partícules per fer que la mida de les partícules disminueixi amb el temps.

Solucions dels Exercicis

Solució 1: Simulació de Fum

public class SmokeEmitter : MonoBehaviour
{
    public ParticleSystem smokeParticleSystem;

    void Start()
    {
        var emission = smokeParticleSystem.emission;
        emission.rateOverTime = 50; // Genera 50 partícules per segon

        var main = smokeParticleSystem.main;
        main.startLifetime = 5.0f; // Cada partícula viu durant 5 segons
        main.startSpeed = 1.0f; // Velocitat inicial de les partícules
        main.startSize = 1.0f; // Mida inicial de les partícules
        main.startColor = Color.gray; // Color inicial de les partícules
    }

    void Update()
    {
        var main = smokeParticleSystem.main;
        main.startColor = new ParticleSystem.MinMaxGradient(Color.gray, Color.lightGray); // Canvia el color de les partícules amb el temps
    }
}

Solució 2: Simulació d'Explosió

public class ExplosionEmitter : MonoBehaviour
{
    public ParticleSystem explosionParticleSystem;

    void Start()
    {
        var emission = explosionParticleSystem.emission;
        emission.rateOverTime = 0; // No genera partícules contínuament
        emission.SetBursts(new ParticleSystem.Burst[] { new ParticleSystem.Burst(0.0f, 100) }); // Genera 100 partícules en un sol esclat

        var main = explosionParticleSystem.main;
        main.startLifetime = 1.0f; // Cada partícula viu durant 1 segon
        main.startSpeed = 20.0f; // Velocitat inicial de les partícules
        main.startSize = 0.5f; // Mida inicial de les partícules
        main.startColor = new ParticleSystem.MinMaxGradient(Color.red, Color.yellow); // Color inicial de les partícules
    }

    void Update()
    {
        var main = explosionParticleSystem.main;
        main.startSize = new ParticleSystem.MinMaxCurve(0.5f, 0.1f); // Disminueix la mida de les partícules amb el temps
    }
}

Resum

En aquesta secció, hem après els conceptes bàsics dels sistemes de partícules i com implementar efectes de partícules comuns com el foc, la pluja, el fum i les explosions. Hem vist com configurar els emissors, actualitzar les propietats de les partícules i renderitzar-les a la pantalla. També hem practicat amb exercicis per reforçar els conceptes apresos. Amb aquests coneixements, estàs preparat per crear efectes de partícules més complexos i realistes en els teus videojocs.

© Copyright 2024. Tots els drets reservats