Effet de particule basique

Introduction

Donc voici une animation basique sur les particules. On peut générer des particules pour simuler divers situations : la pluie, la neige, une explosion, et etc ...

Voici par exemple quelques animations avec les particules :

La première étant à la base de ce tuto.

  • Désassemblage / Réassemblage : cliquez sur la scene pour lancer la première animation, recliquez pour lancer la deuxième.

output

Alternative content

Get Adobe Flash player

  • Explosion spatiale : explosion sans la notion de gravité. Cliquez sur la scène pour lancer l'animation

output

Alternative content

Get Adobe Flash player

  • Explosion avec gravité : les particules sont soumises à la gravité.

output

Alternative content

Get Adobe Flash player

On peut définir une particule de plusieurs façon, cela peut être une instance de MovieClip etc... mais pour ce petit tuto, je définirais ma particule comme étant un pixel.

On se demandera après, où allons nous mettre toutes ces particules ? Vous serez tentez de dire dans un Array, mais en fait non...

Nous proscrirons l'utilisation des Array qui sont beaucoup trop lente. En effet, les Array sont vraiment utiles lorsque l'on souhaite récupérer directement une valeur, grâce à son index dans le tableau, néanmoins imaginez juste que vous souhaitiez supprimer une valeure du tableau.

Cela impliquera le décalage à droite ou à gauche des autres éléments du tableau pour reformer le tableau. C'est lourd à force...

Ainsi, tant que vous n'avez aucun besoin des index utilisez les Listes si vous souhaitez gagner en performance.

De quelle liste d'ailleurs ? Je parle ici d'une liste chaînée.

D'ailleurs dans ce tuto nous allons utiliser une liste chaînée bien personnalisée avec juste ce qu'il nous faut pour définir une particule.

Dans le vif du sujet

Donc, sur le principe on ne va pas utiliser ici x-instance d'un MovieClip (ou Sprite) représentant une particule, et l'animer. Pour pouvoir appliquer la première animation vue un peu plus tôt, nous allons définir une particule comme étant un pixel.

Créons donc notre classe particule dans laquelle nous allons définir les attributs nécessaires à sa manipulation.

class Particle
{    
	/*next représente la particule suivante => cela formera donc une liste chaînée de particules*/
    public var next:Particle;
    
    /*notre particule aura :
		- une couleur, 
		- une position en x, et y
		- une position en y qui varie (y2) => utile "précisément" pour notre animation
		- une variation de trajectoire en x et y
		- une vélocité en x et y
		 */
    public var color:UInt;
    public var x:Float;
    public var y:Float;
    public var y2:Float;
    public var variation:Float; 
    public var xVel:Float;
    public var yVel:Float; 
   
    public function new(c:UInt)
    {
        color = c;
    }
}