【发布时间】:2011-06-01 23:19:13
【问题描述】:
我要制作一个游戏,你可以从上面看到一个角色四处奔跑。但问题是如何让角色一直看着鼠标?以及如何计算角度以便我可以朝鼠标(我目前正在寻找的地方)射击。我猜你必须玩三角学之类的东西才能得到角度,但我真的不知道怎么做。
我的数学很不错,如果大家帮帮我,我可能会弄明白。
对不起,我最终的英语不好,我是瑞典人 :)
谢谢, 亚历山大
【问题讨论】:
-
我认为您回答了自己的问题...使用触发
我要制作一个游戏,你可以从上面看到一个角色四处奔跑。但问题是如何让角色一直看着鼠标?以及如何计算角度以便我可以朝鼠标(我目前正在寻找的地方)射击。我猜你必须玩三角学之类的东西才能得到角度,但我真的不知道怎么做。
我的数学很不错,如果大家帮帮我,我可能会弄明白。
对不起,我最终的英语不好,我是瑞典人 :)
谢谢, 亚历山大
【问题讨论】:
double angle = Math.atan2(yMouse-yChar, xMouse-xChar);
【讨论】:
正如你所说,在 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>【讨论】: