这是一个很小的问题,但是却使我非常恼火。
基本上是为了给背景知识,我制作了一个小型的自上而下的射击游戏,并且播放器向着鼠标旋转。当他们射击子弹时,子弹会以被射击的角度旋转,但子弹不是从玩家的坐标出发,而是来自枪支。
这很好用,但是唯一的问题是,将光标设置为在鼠标坐标所在的位置绘制。由于存在如下偏移,项目符号在光标“下方”而不是直接通过光标:
我希望它看起来像这样:->
我花了大约2个小时试图找到解决方案,但到目前为止我能想到的最好的方法是
Player p = Client.pList.getPlayerByName(Client.username);
int cursX = (int) (p.getX() + Math.cos(mouseAngle) * Math.abs(mousePos[0] - p.getX()));
int cursY = (int) (p.getY() + Math.sin(mouseAngle) * Math.abs(mousePos[1] - p.getY()));
g.drawLine(cursX - 4, cursY, cursX + 4, cursY);
g.drawLine(cursX, cursY - 4, cursX, cursY + 4);
我将不胜感激任何帮助
最佳答案
由于您正在控制光标绘制,因此您可以简单地将光标绘制为原始鼠标位置(不是从您似乎正在使用的玩家瞄准位置)加上枪距玩家中心的偏移量-然后它将出现在子弹线上。除了用于确定发射子弹的初始位置的相同计算之外,不需要三角函数。
另一种方法是将火对准鼠标的实际位置。这比较复杂,但是如果您有兴趣,我会解决。