J'avais un problème de rebond de balle dans une classe de test...
sans arrondir les valeurs de mes variables posx et posy, la balle ne prenait parfois pas le bon angle.
En arrondissant ces valeurs, plus de problème...
Quelqu'un a une idée de ce qui peut se passer lors du calcul du Math.cos() et Math.sin() en AS3 ???
Un problème de décimales???
Je comprends d'autant moins que je n'ai pas besoin d'arrondir la valeur de la rotation obtenue
Merci d'avance.
Nicolas.
sans arrondir les valeurs de mes variables posx et posy, la balle ne prenait parfois pas le bon angle.
En arrondissant ces valeurs, plus de problème...
Quelqu'un a une idée de ce qui peut se passer lors du calcul du Math.cos() et Math.sin() en AS3 ???
Un problème de décimales???
Je comprends d'autant moins que je n'ai pas besoin d'arrondir la valeur de la rotation obtenue
Merci d'avance.
Nicolas.
Code :
private function moveBall(e:Event):void{
//speedx = Math.sin(deg2rad(rotation+90))*speed;
//speedy = Math.cos(deg2rad(rotation+90))*speed;
// IF the values are not round() -> Unknow Error
speedx = Math.round(Math.sin(deg2rad(rotation+90))*speed);
speedy = Math.round(Math.cos(deg2rad(rotation+90))*speed);
if((this.x + this.radius + speedx >= this.stage.stageWidth)){
bSound.play();
rotation = rad2deg(Math.atan2(-speedy,-speedx));
}
if((this.y + this.radius + speedy >= this.stage.stageHeight)){
bSound.play();
rotation = rad2deg(Math.atan2(speedy,speedx));
}
if((this.x - this.radius + speedx <= 0)){
bSound.play();
rotation = rad2deg(Math.atan2(-speedy,-speedx));
}
if((this.y - this.radius + speedy <= 0)){
bSound.play();
rotation = rad2deg(Math.atan2(speedy,speedx));
}
this.x += speedx;
this.y += speedy;
}