2011-06-01 81 views
5

我将制作一款游戏,您可以在上面看到一个人物跑来跑去。但问题是我如何让角色始终看着鼠标?我该如何计算角度,以便可以朝鼠标拍摄(我正在寻找的位置)。我想你必须玩三角和类似的东西来获得角度,但我真的不知道如何。Java游戏开发 - 在鼠标坐标处查看并拍摄

我很擅长数学,所以如果你们给我一些帮助,我可能会想出来。

而且对不起,我最终的英文不好,我是瑞典人:)

感谢, Alexandberg

+0

我想你回答了你自己的问题...使用trig – gshauger 2011-06-01 23:23:44

回答

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

我认为这并没有奏效。我只有-3到3的数字,但我不知道如何处理它们。我认为角度更像0-360。 – ASandberg 2011-06-02 00:24:45

+1

它实际上是pi,因为它是弧度。要将其转换为度,请调用Math.toDegrees() – 2011-06-02 01:54:06

+0

谢谢,角度现在正在工作(除角度介于-180和180之间,但我可以修复)。问题是,我如何绘制通过鼠标从播放器中移出的一条线(它在击中鼠标位置后继续)。现在我得到了玩家和鼠标点之间的距离和角度。 – ASandberg 2011-06-02 10:15:43

1

如你所说的一大提示可以在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); 

我曾经发现在最后一行有一个小技巧:acos在0和PI之间,但是如果sin是负数,它应该被否定,如果sin为0,它将评估为+0.0,角度将为0或PI无论如何不管

+0

非常感谢,我想我现在明白了。 编辑:当我尝试打印角度来检查它是否工作,它只是在0-3(aprox)之间。我如何从中获得角度?因为我现在没有看到我现在将如何使用角度做任何事情。 – ASandberg 2011-06-01 23:56:05