2011-06-01 1 views
5

Je vais faire un jeu où vous courrez avec un personnage, vu d'en haut. Mais le problème est de savoir comment faire pour que le personnage regarde la souris tout le temps? Et comment puis-je calculer l'angle de sorte que je puisse tirer vers la souris (où je suis actuellement en train de regarder). Je suppose que vous devez jouer avec la trigonométrie et des choses comme ça pour obtenir des angles, mais je ne sais vraiment pas comment. Je suis assez bon en maths, donc je pourrais comprendre si vous me donnez de l'aide.Développement de jeux Java - Regarde et tire sur les coordonnées de la souris

Et désolé pour mon mauvais anglais par la suite, je suis suédois :)

Merci, Alexandberg

+0

Je pense que vous avez répondu à votre propre question ... utiliser trig – gshauger

Répondre

1
double angle = Math.atan2(yMouse-yChar, xMouse-xChar); 
+0

Cela n'a pas très bien fonctionné je pense. Je viens de recevoir des chiffres de -3 à 3, mais je ne sais pas quoi faire avec eux. Je pensais que les angles seraient plus comme 0-360. – ASandberg

+1

C'est -pi à pi en fait parce que c'est en radians. Pour le convertir en degrés, appelez Math.toDegrees() –

+0

Merci, les angles fonctionnent maintenant (sauf pour les angles sont entre -180 et 180, mais je peux résoudre ce problème). Le problème est, comment puis-je dessiner une ligne qui va du joueur à travers la souris (il continue après qu'il frappe l'emplacement de la souris). En ce moment j'ai la distance entre le joueur et le point de la souris et l'angle. – ASandberg

1

que vous avez dit un grand indice se trouve dans trig

Point pl = getCharacterLox(); 
Point mouse = getMouseLoc(); 
double cos = (mouse.getX()-pl.getX()); 
double sin = (mouse.getY()-pl.getY()); 
cos/=Math.hypot(cos,sin);//normalize 
double angle = Math.copySign(Math.acos(cos),sin); 

je une petite astuce ici dans la dernière ligne: acos est entre 0 et PI mais si sin est négatif, il devrait être annulé, si sin est 0 il évaluera à +0.0 et l'angle sera 0 ou PI indépendamment

+0

Merci beaucoup, je pense que je l'ai maintenant. Éditer: Lorsque j'essaie d'imprimer l'angle pour vérifier si cela fonctionne, c'est juste entre 0-3 (aprox). Comment puis-je obtenir l'angle de cela? Parce que je ne vois pas comment je vais utiliser l'angle pour faire quoi que ce soit. – ASandberg