这是一个非常小的问题但是让我很烦恼的问题。
基本上为了给出一点背景,我做了一个小型自上而下射击游戏,玩家向鼠标旋转。当他们射击时,子弹继续射击的角度,但它不是来自玩家的坐标,而是来自枪。
这很有效,但唯一的问题是,光标设置为绘制鼠标坐标所在的位置。由于像这样的偏移,子弹在光标“下方”而不是直接穿过它。
我希望它看起来像这样: - >
我花了大约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);
我将不胜感激任何帮助
答案 0 :(得分:0)
由于您正在控制光标绘制,因此您可以将光标简单地绘制为原始鼠标位置(不是来自您似乎正在使用的播放器目标)加上枪从播放器中心的偏移 - 然后它将出现在子弹线上。除了用于确定射击子弹的初始位置的相同计算之外,这不需要三角学。
另一种方法是将火焰对准实际的鼠标位置。这更复杂,但如果你有兴趣我会解决。