Salut,
Je suis sur le dev d'un jeu de billard et j'ai un problème avec la collision entre plusieurs billes.
Mon code n'est pas assez précis il arrive que les billes restent collées ou on voit la bille rentrer dans une autre bille etc...
toutes les billes ont ce proto
MovieClip.prototype.deplacer = function() {
this.onEnterFrame = function() {
this._x += this.vitesseX;
this._y += this.vitesseY;
this.testCollision();
this.prec_x = this._x;
this.prec_y = this._y;
}
}
MovieClip.prototype.testCollision = function() {
for (i=0; i<tabBille.length; i++) {
if (this.id != tabBille[i] && this != undefined) {
b = eval("bille"+tabBille[i]);
distance = Math.sqrt(Math.pow(this._x-b._x, 2)+Math.pow(this._y-b._y, 2));
if (distance<=this.diametre && !this.tabCollision[b.id]) {
this.collision(b);
}
}
}
};
// de la physique collision entre 2 billes en mouvement
MovieClip.prototype.collision = function(objet) {
angle = Math.atan2(objet._y-this._y, objet._x-this._x);
cosAngle = Math.cos(angle);
sinAngle = Math.sin(angle);
v1 = Math.sqrt(Math.pow(this._x-this.prec_x, 2)+Math.pow(this._y-this.prec_y, 2));
v2 = Math.sqrt(Math.pow(objet._x-objet.prec_x, 2)+Math.pow(objet._y-objet.prec_y, 2));
angle1 = Math.atan2(this.vitesseY, this.vitesseX)-angle;
angle2 = Math.atan2(objet.vitesseY, objet.vitesseX)-angle;
v1x = v1*Math.cos(angle1);
v1y = v1*Math.sin(angle1);
v2x = v2*Math.cos(angle2);
v2y = v2*Math.sin(angle2);
//
this.vitesseX = cosAngle*v2x-sinAngle*v1y;
this.vitesseY = sinAngle*v2x+cosAngle*v1y;
objet.vitesseX = cosAngle*v1x-sinAngle*v2y;
objet.vitesseY = sinAngle*v1x+cosAngle*v2y;
//
this._x = this.prec_x;
this._y = this.prec_y;
objet._x = objet.prec_x;
objet._y = objet.prec_y;
};
Pas tellement de mettre les commentaires désolé.
Mais si vous les souhaitez je peux essayer de trouver le temps
Merci par a