Question

Je suis en train de faire une rotation d'un objet de jeu en définissant un début et de fin et les X images pour faire le mouvement.Ensuite interpoler le début et la fin de l'angle pour le faire.

Il fonctionne bien, mais j'essaie de faire le plus court chemin possible en option (par opposition à "faire le parcours le plus long").Dans la plupart des cas, il fonctionne, mais si la rotation passe au dessus de la 360 ou au-dessous de 0, je ne sais pas comment le détecter et de modifier les numéros.(par exemple si je veux prendre l'itinéraire le plus court à partir de 270 à 90, le plus court chemin passe au-dessus de 360/0, donc, n'est jamais utilisé, donc 270 devrait devenir -45 à interpoler à 90).Je suis terrible à expliquer et je ne suis pas de langue maternelle anglaise pour le tour, donc je vais utiliser pseudocode de ce que j'ai.

 thing.start_angle = 180
 thing.end_angle = 90
 thing.angle = interpolate(thing.start_angle, thing.end_angle, position)

J'aime cette façon (pour le contrôle d'un "si l'angle > angle_max puis d'angle - 1"), mais je ne trouve pas une "règle" pour savoir comment détecter si l'angle de rotation...Comment puis-je savoir si la rotation de la descendre en dessous de 0 ou au-dessus de 360, pour agir en conséquence?

Était-ce utile?

La solution

L'angle de retour si

chose.end_angle - chose.start_angle >= 180 ou < -180

(en supposant une gamme d'angle de 0 à 379).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top