La graviter ??

Résolu
oliver7 Messages postés 102 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 8 septembre 2006 - 19 avril 2005 à 18:14
oliver7 Messages postés 102 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 8 septembre 2006 - 1 mai 2005 à 12:53
bjr
Voila j'ai une fleche qui pointe vers la souris et que des qu'on apuis sur la une touche la fleche par vers la souri ,
mais voila elle ne retombe pas.
Et j'aimerai bien qu'elle dessende.
mon code :
onClipEvent (load) {
vitesse = 0;
}
onClipEvent (enterFrame) {
this._rotation = Math.atan2(_root._ymouse-_y, _root._xmouse-_x)/(Math.PI/180);
if (Key.isDown(Key.UP)) {
vitesse = 5;
}
_x += vitesse*Math.cos(Math.PI/180*this._rotation);
_y += vitesse*Math.sin(Math.PI/180*this._rotation);
}

olivier

3 réponses

durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006
20 avril 2005 à 10:12
Salut,



pour faire un effet de gravité, il faut que ta vitesse diminue dans le temps.



un peu de mécanique:

A=Somme(force) //accélération égale somme des forces

dans ton cas, il n'y a que la gravité, donc ton accélération joue uniquement sur l'axe des y

Ay=mG//



vitesse=intégrale de accélération selon dt entre to et t:

Vx=Vx0

Vy=Vy0+mGt



position=intégrale de vitesse:

y=y0+Vy0t+(mgt^2)/2



dans ton code, comme tu utilises onClipEvent(enterFrame) et x+=, tu
travail sur la variation d'un instant t à t+1, donc uniquement sur la
partie (Vy0+mGt)

à l'heur actuelle, ton code a comme formule x+=Vy0, pour simuler la partie mGt, il te faut mettre une formule du style:



onClipEvent (load) {
vitesse = 0;

follow=true; //indique si la flèche suit la sourie ou bien est en mouvement
}
onClipEvent (enterFrame) {

if (follow==true){


this._rotation = Math.atan2(_root._ymouse-_y, _root._xmouse-_x)/(Math.PI/180);
if (Key.isDown(Key.UP)) {

T=0;
vitesse = 5;

follow=false; //la flèche est tirée, elle ne suit plus la sourie
}


} else {

T+=1;

_x += vitesse*Math.cos(Math.PI/180*this._rotation);
_y += vitesse*Math.sin(Math.PI/180*this._rotation)+10*T;

if (_y>XXX) {CODE KI DIT CE QU'IL FAUT FAIRE UNE
FOIS QUE LA FLECHE EST HORS DE L'ECRAN-ZONE DE
DEPLACEMENT...}

}
}


Voilà, j'espère que cela va t'aider.



A+
3
funghi Messages postés 186 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 3 janvier 2011
20 avril 2005 à 10:13
oila un code que j'ai chopé sur yazo.net : ca simule la gravité... simple et efficace !!

vite=2;
gravite=4;
elasticite=10;

this.onEnterFrame=function(){
vite+=(0.1*gravite);
this._y+=vite;
if(this._y>=300){
this._y=300;
vite-=elasticite;
vite*=-1;
}
t'as juste à changer tes coordonnées et le tour est jouer !!!
Funghi
0
oliver7 Messages postés 102 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 8 septembre 2006
1 mai 2005 à 12:53
Merci pour ton code durand2504 c'est exactement se que je cherchait.

olivier
0
Rejoignez-nous