【问题标题】:Java game development - Look and shoot at mouse coordinatesJava 游戏开发 - 鼠标坐标查看和射击
【发布时间】:2011-06-01 23:19:13
【问题描述】:

我要制作一个游戏,你可以从上面看到一个角色四处奔跑。但问题是如何让角色一直看着鼠标?以及如何计算角度以便我可以朝鼠标(我目前正在寻找的地方)射击。我猜你必须玩三角学之类的东西才能得到角度,但我真的不知道怎么做。

我的数学很不错,如果大家帮帮我,我可能会弄明白。

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

谢谢, 亚历山大

【问题讨论】:

  • 我认为您回答了自己的问题...使用触发

标签: java mouse angle


【解决方案1】:
double angle = Math.atan2(yMouse-yChar, xMouse-xChar);

【讨论】:

  • 我认为这不是很好。我刚得到从 -3 到 3 的数字,但我不知道如何处理它们。我认为角度会更像 0-360。
  • 实际上是 -pi 到 pi,因为它是弧度。要将其转换为度数,请调用 Math.toDegrees()
  • 谢谢,角度现在可以正常工作了(除了角度在 -180 到 180 之间,但我可以解决这个问题)。问题是,我如何绘制一条从玩家穿过鼠标的线(它在击中鼠标位置后继续)。现在我得到了玩家和鼠标点之间的距离和角度。
【解决方案2】:

正如你所说,在 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,并且 angle 将为 0 或 PI,无论如何

p>

【讨论】:

  • 非常感谢,我想我现在明白了。编辑:当我尝试打印角度以检查它是否有效时,它只是在 0-3 之间(大约)。我如何从中获得角度?因为我现在不知道如何使用这个角度来做任何事情。
猜你喜欢
  • 1970-01-01
  • 2020-07-14
  • 2014-12-26
  • 2012-06-02
  • 1970-01-01
  • 2019-10-14
  • 2015-03-05
  • 1970-01-01
  • 2017-01-03
相关资源
最近更新 更多