Juste curieux. Quand je rebondis une balle sur les murs de la scène en utilisant la technique suivante.Rebondir une balle sur les 4 murs d'une étape
if(y > sRef.stageHeight || y < 0)
{
yDir = yDir * -1;
}
else if (x > sRef.stageWidth || x < 0)
{
xDir = xDir * -1;
}
x += xspeed * xDir;
y += yspeed * yDir;
Ce qui précède semble bien et fonctionne bien. Mais si je choisis d'utiliser des angles plutôt que comme ce qui suit ...
if(y > sRef.stageHeight || y < 0)
{
angle += 45;
}
else if (x > sRef.stageWidth || x < 0)
{
//angle = angle * -1;
angle += 45;
}
vx = Math.cos(angle * Math.PI/180) * bSpeed;
vy = Math.sin(angle * Math.PI/180) * bSpeed;
x += vx;
y += vy;
Non seulement la balle et saccadée Skippy. mais après si souvent il commence à aller soit dans un mouvement vertical y = 5; x = 0; ou un mouvement horzontal x = 5, y = 0. Et reste ainsi. Pourquoi est-ce que la première méthode fonctionne bien, mais l'autre méthode fonctionne terrible. Serait-ce parce que Math.cos et Math.sin renvoient de très grandes décimales. Quelqu'un pourrait-il m'aider s'il vous plaît, parce que je préfère vraiment utiliser la deuxième méthode.
Merci
Non seulement la direction est parfois erronée, mais 45 est seulement l'angle correct lorsque la balle approche à un angle de 67,5 degrés. –
et même alors, seulement dans une direction :) donc 1 collisions sur 4 (en supposant une trajectoire en ligne droite) serait correcte – Jimmy
bien je faisais un petit essai une erreur pour voir ce qui fonctionnerait. quand j'ai essayé le second. il a rebondi sur les murs comme il le supposait, mais maintenant que j'y pense, il pourrait frapper le mur à plusieurs reprises en changeant de direction jusqu'à ce qu'il commence à bouger dans la bonne direction. Je préférerais remuer la balle en utilisant des angles parce que plus tard, je vais utiliser une pagaie qui va remuer la balle dans des directions différentes en fonction de la vitesse de la palette se déplaçant sur l'axe des x. J'ai essayé l'autre méthode mais il est difficile de la comprendre parfaitement. – numerical25