Java游戏开发 - 视线跟随鼠标坐标进行射击

5
我将制作一个游戏,你可以操纵一个从上方看的角色奔跑。但问题是如何使角色始终朝向鼠标?以及如何计算角度,以便可以朝向鼠标(我当前所看的方向)进行射击。我猜需要使用三角学等知识进行角度计算,但我真的不知道该怎么做。
我对数学还算有一定的了解,如果你们能给我提供一些帮助,我可能会想通。
对于我的英语如有偏差之处,请见谅,我来自瑞典 :)
谢谢, Alexandberg

我认为你已经回答了自己的问题...使用三角函数。 - gshauger
2个回答

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

那个好像不太行。我只得到了从-3到3的数字,但是我不知道该怎么处理它们。我以为角度会更像0-360。 - Alexander Sandberg
1
实际上它是从 -pi 到 pi,因为它是以弧度为单位的。要将其转换为角度,请调用 Math.toDegrees()。 - Maurice Perry
谢谢,角度现在可以正常工作了(除了角度在-180到180之间的情况,但我可以修复)。问题是,我该如何画一条从玩家经过鼠标的线(它会继续延伸到鼠标位置之后)?现在我得到了玩家和鼠标点之间的距离和角度。 - Alexander Sandberg

1

正如你所说,一个重要的提示可以在三角函数中找到。

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-3之间(大约)。我该如何获得角度?因为我现在不知道如何使用角度来做任何事情。 - Alexander Sandberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接