Émetteur de particules très paramétrable

Soyez le premier à donner votre avis sur cette source.

Vue 13 983 fois - Téléchargée 4 445 fois

Description

Ce code permet d'ajouter un émetteur de particules sur la scène. On peut changer toute une flopée de paramètres : taille, couleur, rotation, vitesse de rotation, particules/seconde, choisir de ne pas interpoler une donnée...
L'interpolation de la couleur par exemple, consiste à donner à la particule une couleur donnée au début de sa "vie", et une autre à la fin. Elle changera donc progressivement de teinte. Mais si on n'interpole pas la couleur, la particule commencera avec une couleur au hasard entre les deux couleurs données, et la gardera jusqu'à sa "mort".

J'avais vu quelques autres codes de cette nature, mais rien ne me semblait assez paramétrable, ou réaliste...

La majorité du code est constituée de répétitions, que j'aurai peut-être pu éviter avec des fonctions, mais ça me semble correct comme ça quand même.

Il est aussi très agrandi par la transmission des paramètres au clip émetteur (la partie // Variables) ... j'aurai voulu éviter ça, mais je n'ai pas trouvé de moyen...

Source / Exemple :


// Syntaxe pour créer un émetteur... certes les paramètres sont très difficilement interprétables, mais c'est quand même utilisable avec le petit guide ci-dessous...
creerEmetteurParticule(x, y, x1, x2, y1, y2, r1, v1, b1, r2, v2, b2, a1, a2, ro1, ro2, vr1, vr2, vx1, vx2, vy1, vy2, dx1, dx2, dy1, dy2, d, pps, vi, ci, ti, vri, ss, g, oi);

// Et oui, je vous avais prévenus, il y a beaucoup de paramètres ^^ ...

Conclusion :


Voici la liste des différents paramètres, et leur utilité :
x, y : position de l'émetteur
x1, x2, y1, y2 : tailles 1 et 2 des particules. On peut choisir d'interpoler de 1 à 2, ou de faire commencer la particule avec une valeur au hasard entre 1 et 2.
r1, v1, b1, r2, v2, b2 : valeurs RVB de la couleur 1, et de la 2. Interpolable ou non.
a1, a2 : alpha, interpolable ou non.
ro1, ro2 : rotation initiale (à la création). La rotation de départ est donc fixée entre ces deux valeurs.
vr1, vr2 : vitesse de rotation. Interpolable ou non, même si ça paraît bizarre.
vx1, vx2, vy1, vy2 : vitesses x et y, interpolables ou non comme la vitesse de rotation.
dx1, dx2, dy1, dy2 : décalage initial de la particule par rapport à l'émetteur. Permet de produire des particules qui sont un peu à côté de la position de l'émetteur, utilisé pour les feux par exemple.
d : durée de vie des particules, en secondes (= 48 frames).
pps : nombre de particules crées par seconde.
vi : true ou false, détermine si la vitesse est interpolée ou non.
ci : détermine si la couleur est interpolée ou non.
ti : détermine si la taille est interpolée ou non.
vri : détermine si la vitesse de rotation est interpolée ou non.
ai : détermine si la vitesse de rotation est interpolée ou non.
ss : détermine si l'émetteur doit suivre la souris. Cela rend les paramètres x et y inutiles. Cependant,é en lui même ne se déplace pas (cf NB1).
g : une valeur de gravité, appliquée à la vitesse y des particules.
oi : détermine si la profondeur des particules est inversée (les nouvelles apparaissent derrière les anciennes).

NB1 : Les particules sont crées DANS le clip de l'émetteur, ce qui fait que si l'on déplace l'émetteur, toutes les particules le suivent en bloc... par très réaliste, mais si quelqu'un veut que je règle ça, je le ferai...

NB2 : Chaque composante RVB de la couleur (lorsque cette dernière n'est pas interpolée) est choisie au hasard entre les deux valeurs imposées. Ainsi, la valeur R peut être au seuil minimum alors que la B est entre le maximum, et le minimum... ce qui fait qu'avec une couleur 1 de 000:000:000 et une 2 de 255:255:255 vous pourrez avoir toutes les couleurs possibles ! Ca peut être pratique mais gênant aussi, il faudra peut-être que je le rajoute en paramètre ?

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
4 octobre 2010

Bonjour,

Comment faire pour l'intégrer dans une autre séquence sans que le code bug le reste
Messages postés
209
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
6 avril 2009
1
Impressionnant !
Je n'ai pas encore regardé le code mais j'ai testé les différents exemples que tu propose et c'est vraiment efficace... Très fluide, magnifique.
Pour la lenteur, j'ai essayé de parametrer la qualité dans le player au minimum et ca fonctionne très bien, c'est toujours aussi beau.
Je note tout de suite, car ce que j'ai vu du code avait l'air assez clean et raisonnablement commenté > 10...
Messages postés
24
Date d'inscription
vendredi 21 juillet 2006
Statut
Membre
Dernière intervention
26 juillet 2008

Un objet... tu veux dire, avec la syntaxe à accolades, ce qui donnerait creerEmetteurParticule({x:123,y:122 ...}); ? Ce qui permettrait d'omettre les paramètres "false" ou nuls, et qui me permettrait également de transmettre directement les variables à l'objet créé en mettant cet objet en dernier paramètre !
Dis-moi si je me trompe...

Et pour l'optimisation, je pense que ça vient plutôt du côté graphique : chacune de mes particules est un rond dégradé alpha 100->0, donc dès que plusieurs particules su superposent (ce qui est abondamment le cas dans ma source) cela demande des calculs considérables à Flash !
Messages postés
232
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
29 mars 2011

Désolé pour le double post.

L'effet est sympa, mais un peu lent (optimisation... quand tu nous tiens !)
Je n'ai pas regarder le code, donc pas de vote pour le moment.
Messages postés
232
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
29 mars 2011

Tu pourrais énormément diminuer le nombre de paramètres.

Enfin, non... tu ne peux pas les diminuer, mais tu peux au moins limité la taille. Car l'utilisateur n'aura pas forcément envie d'utiliser tous les paramètres.
Je te conseil de faire des tests pour savoir quel paramètres il a mis. Et mettre un Objet en paramètres serait pas mal je pense (sauf pour les paramètres indispensable).

Avec un objet, tu pourras tester pour savoir si un paramètres à été défini ou non. Ce qui permet de le prendre en compte ou non, et surtout ce qui permet à l'utilisateur de ne rien mettre (au lieu d'un "null", "undefined", "", ou autre...)
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.