Equation de décélération d'un clip

Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 8 janv. 2006 à 15:54
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 9 janv. 2006 à 21:07
Salut à tous,



J'ai une petite colle à vous soumettre.



Je voudrais trouver un code pratique pour gérer la chute d'un
objet tombant d'un avion (dont les mouvements sont dirigés par la
souris), en sachant que l'avion peut être amené à accélérer, décélérer,
aller vers la droite ou vers la gauche.

Ce que je voudrais por l'objet, c'est qu'il décélère sa course horizontale tout en tombant.

J'espère que mes explications sont claires!



Personnellement, je suis pas un pro de l'actionscript mais avec
un peu d'aide, je suis parvenu à mettre ce code-ci au point:



MovieClip.prototype.tombe = function() {

// flag indiquant que l'objet tombe
this.tombe = true;

//
initialisation des vecteurs vitesses de singe_mc par rapport au vaisseau

this.vx = this.avion_mc.vx;

this.vy = this.avion.vy;

// flag pour indiquer la décélération de l'objet
this.deceleration = true;

};

this.objet_mc.onEnterFrame = function() {

if (this.tombe) {

if (this.deceleration) {

this.vx *= 0.9;

this.vy *= 0.9;

} else {

this.vx *= 1.1;

this.vy *= 1.1;

}

this._x += vx;


this._y += vy;

}

};

unEcouteur = new Object();


unEcouteur.onKeyDown = function() {

this.objet_mc.tombe();

trace("keydown
fonctionne!");

};



C'est un code que j'ai un peu de mal à suivre et à vrai dire, pour le
moment, il ne fonctionne pas, j'ignore pourquoi et je n'ai plus les
scripteurs que j'avais au départ pour m'aider. Donc, ma question:
quelqu'un est-il capable d'analyser ce code et de m'aider à le faire
fonctionner? Merci!

4 réponses

_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
8 janv. 2006 à 17:13
Salut

ok fa valloir quelque info en plus
car a ce que je voit dans le code c normal que ca marche pas, y'a des prob de chemin entre clip et obj je pense
donc moi j'voudrais savoir
1/ ta version de flash (j'espere que t'es en MX 2004 ou 8 car en dessous la gestion obj et chiante ...)
2/ tu as un clip avion_mc, vx et vy qui sont dedans corresponde a quoi ? vecteur directeur ? accelerateur ?
3/ ton obj (boite par ex) qui doit tomber de l'avion et bien un clip au mm niveau (dans le mm clip ou a la racine) que l'avion ? existe t'il sur la scene (duplicateMovieClip) ou dans la bibliotheque (attachMovie)
des que tu aura répondu a tt ca je t'explique comment faire
et si t'es pas en mx 2004 ou flash8, please fait la mise a jour :)
++

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
9 janv. 2006 à 14:53
Salut Benjy!



Avant tout, merci de t'intéresser à mon problème!



Bon, pour répondre à tes questions, je me suis dis qu'un petit
fla vallait peut-être mieux qu'un long discours donc, le voici:



http://gizmil.jexiste.fr/liens_forums/test_singe.fla



C'est peut-être encore la solution la plus simple...



Mais au cas où, je vais quand même répondre à tes questions:



1/ ma version, c'est Flash MX

2/ avion_mc, c'est l'avion qui largue des objets, il est
dirigé par la souris. Une équation lui est appliquée pour qu'il suive
la souris avec un temps de retard:

var vitesse_y = 15;

var vitesse_x = 15;

avion_mc._y += (_ymouse-avion_mc._y-150)/vitesse_y;

avion_mc._x += (_xmouse-avion_mc._x-230)/vitesse_x;



Donc plus l'avion approche du pointeur, plus il décélère et plus il s'en écarte, plus il accélère!



Tout ce que je sais de vx et vy, c'est qu'ils signifient
vecteur x et vecteur y mais j'ignore à quoi ils correspondent
exactement. En tous cas, il font partie intégrante de la fonction et ne
sont pas repris ailleurs dans l'animation.



3/objet_mc est sur la scène, avec avion_mc. ils sont au _level0 tous les deux.



PS: pour le fla, je tiens à préciser que, dans celui-ci, avion_mc =
shipRoger (variable contenant le clip) ou shipRoger_mc (non d'occurence
du clip) et objet_mc = contenerCan_mc mais tu verras tout ça par
toi-même si tu ouvres le fla.

Si tu fais un rendu, tu constateras qu'en appuyant sur une touche, un
pack de cannettes tombe sur la scène. Ces canettes = l'objet qui doit
tomber de l'avion.



Voilà! A dire vrai, si il n'y a pas de décélération de l'objet, ce
n'est pas vraiment grave et si tu n'a pas envie d'utiliser le prototype
"tombe", ci-dessus, pas de problème. Mais si tu parviens à me trouver
simplement une solution qui rende la chute de l'objet visuellement
logique, c'est tout bon et je t'en serais grandement reconnaissant! La
décélération, c'était mon idée de départ mais je me suis rendu compte
que comme l'objet ne tombe pas de très haut, c'est pas vraiment un
problème si on ne le voit pas décélérer. Ce qui serait surtout
important, c'est un objet qui tombe de l'avion dans la même direction
que celle prise par l'avion au moment où il est largué. Et le hic
là-dedans, c'est que j'ai essayé simplement de dire objet_mc._x =
avion_mc._x mais lorsque l'avion change de direction juste après avoir
largué, l'objet change également de direction et un objet qui change de
direction dans les airs, c'est plutôt bizarre.



Un dernier détail: l'avion à l'air bizarre mais c'est parce que je l'ai
viré, question de droits d'auteur sur le travail que je suis en train
de faire!



Voilà, en tous cas un grand merci d'avance si tu trouve quelque chose!
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
9 janv. 2006 à 20:39
Salut

désolé mais comme c du mx, je vais pas pouvoir faire grand chose, ca fait 3 ans que j'ai plus fait de mx, et mx2004 et flash8 en sont tres différrents a cause de l'AS2, le jour ou tu migres ton mx en version supp je te montre :)
sinon pourkoi ne pas appliquer les mm function de mouvement que tu as pour l'avion, en modifiant _y (genre vitesse = 4*vitesse/5 tte les frame)
mais pour info en physique, un obj qui tombe accelère et non decelere ;)
++

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
9 janv. 2006 à 21:07
Ok! Ben oui évidemment sauf que moi, je parlais d'une décélération horizontale et non verticale!
L'objet tombe de l'avion en ayant la même vitesse horizontale que
l'avion mais ensuite, avec la friction de l'air, il décélère sa
vitesse horizontale.



C'était ça que je voulais faire mais finalement, ben y a
pas besoin parce que la distance entre l'avion et le sol est minime et
si l'objet garde la même vitesse horizontale que l'avion, c'est pas
gênant visuellement parlant!



Mon véritable problème, finalement, c'est de parvenir à
faire en sorte que, si l'avion change de sens (par exemple si il allait
de gauche à droite et que soudain, il part de droite à gauche),
l'objet, lui, garde le sens horizontal dans lequel il a commencé à
chuter! Donc c'est sur les abscisses (_x) et non sur les ordonnées (_y)
qu'il faut jouer.
0
Rejoignez-nous