Bonjour à tous,
Alors voilà, je suis en train de migrer mon projet d'allegro à la sfml, cependant je rencontre un léger soucis lors du traçage d'un trait.
En gros, le trait que je trace représente simplement un laser tiré par un vaisseau, qui se déplace donc rectilignement à partir du point de départ, et ce, selon un angle défini.
Les deux paramètres principaux de de laser sont:
-Ses coordonnées
-Son angle
Voici le bout de code permettant de tracer ce laser à l’écran:
sf::RectangleShape laser(sf::Vector2f(taille, 2));
//laser.setOrigin(test, test2);
laser.setRotation(70);
laser.setPosition(coordonnees_x, coordonnees_y);
laser.setFillColor(Color(150, 150, 150, 255));
window.draw(laser);
Dans cet exemple, je test pour un angle de 70 degrés, et la variable taille représente la longueur du laser, ce qui n'est pas très important dans mon problème.
Les coordonnées x et y sont calculées ailleurs, dans le bout de code suivant:
coordonnees.x_det += cos(70 / 180 * 3.14159) * temps;
coordonnees.y_det += sin(70 / 180 * 3.14159) * temps;
La variable temps représentant le temps écoulé depuis le départ du projectile afin de connaitre sa position actuelle sur la trajectoire rectiligne qu'il suit.
Ici j'ai également forcé l'angle à 70 degrés pour les besoins du test, j'aurais pu le mettre directement en radian, mais peu importe.
J'en vient donc au problème, il semble que les coordonnées calculées ne suivent pas tout à fait l'angle de 70°, j'ai pensé que cela pouvait venir du fait que l'origine du laser est celle par défaut (0,0), et que donc je devais passer par un setOrigin() avant d'appliquer les coordonnées calculées, mais cela ne change rien, quelque soient les paramètres que j'applique à setOrigin().
Je suis quasiment certain que mon calcul de coordonnées est exact, étant donné que je l'utilise également pour le déplacement des vaisseaux et il fonctionne parfaitement.
Comme je suis loin d'être clair, j'ai joins une image présentant mon problème, on y voit le même laser à quelques secondes d'intervalle, on voit bien qu'il ne se déplace pas de manière linéaire, mais "de coté".
Je suppose que le problème vient de quelque part lorsque je "set" les coordonnées du laser, soit j'oublie de faire quelque chose, soit je ne le fait pas dans le bon ordre, mais là je "sèche" quelques peu . . .
A noter qu'il n'y à aucun problème lorsque l'angle est un multiple de PI/2 (45°, 90°, 135°, 180° . . .)
Merci de votre aide !