Balle qui rebondit contre des murs

antolionel Messages postés 2 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 15 octobre 2003 - 21 sept. 2003 à 08:27
cs_daddy11world Messages postés 60 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 8 novembre 2009 - 25 août 2008 à 13:27
Bonjour,

J'ai réalisé un petit programme en Action Script, qui calcul la position d'une balle lancée avec une certaine vitesse avec un certain angle, et une certaine position de départ. ça ça marche bien, mais ça fait 2 jours que j'essaie de la faire rebondir contre des murs et je ne trouve pas comment faire.

Voici le code.

// Calcul de trajectoire
angle_r = (angle_d*2*Math.PI)/360;
x=x0+(v0*Math.cos(angle_r)*t);
y=y0-(v0*Math.sin(angle_r)*t-(0.5*g*Math.pow(t, 2)));
t+=0.05;

// Déplacement de la balle
tennis._x=x;
tennis._y=y;
tennis._rotation+=3;

// Détection des murs
if (x<0 || x>500){
b1=-b1;
}
if (y<0 || y>350){
b2=-b2;
}

Pour la détection des murs, j'ai fait mis le code ci-dessus car je pense qu'il y'a forcement quelque chose à inverser à ces instant là, mais je n'ai fait aucun essaie concluant.

Donc si quelqu'un avait la solution ça serait sympas, car je commence a avoirles neuronnes qui fument :sad)

D'avance merci

2 réponses

skurvy Messages postés 41 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 25 avril 2004
23 sept. 2003 à 21:23
Inverser la vitesse quand X et l angle quand Y???
je sais pas
0
cs_daddy11world Messages postés 60 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 8 novembre 2009
25 août 2008 à 13:27
//Pour faire rebondire une balle :

//Définire  deux variable "innertie", le vecteur vitesse initial

// coordonnés cartésiens
inertie_x=5
inertie_y=0

// il te faut un clip "_root.balle" avec l'ancrage au milieu dans une scéne dison de 400*400

// le déplacement
_root.onEnterFrame=function(){
//appliquer  l'innertie à la position de la balle
balle._x+=inertie_x
balle._y+=inertie_y
// ajouter de la gravité
inertie_y++
// ajouter les rebons
//a gauche
if(balle._x400-balle._width/2){
balle._x=400-balle._width/2
inertie_x*=-1
}
// en haut
if(balle._y400-balle._height/2){
balle._y=400-balle.height/2
inertie_y*=-1
}
}
0
Rejoignez-nous