java - 在自顶向下游戏中使用三角函数时遇到问题

标签 java trigonometry angle

这是一个很小的问题,但却让我很烦恼。

基本上,为了提供一些背景,我制作了一个小型自上而下的射击游戏,玩家向鼠标旋转。当他们射击时,子弹会沿着射击的角度前进,但它不是源自玩家的坐标,而是来自枪。

这运行良好,但唯一的问题是,光标设置为在鼠标坐标所在的位置绘制。由于这样的偏移,子弹会在光标“下方”行进,而不是直接穿过光标: enter image description here

我希望它看起来像这样:-> enter image description here

我花了大约 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);

如果有任何帮助,我将不胜感激

最佳答案

由于您正在控制光标绘制,因此您可以简单地将光标绘制为原始鼠标位置(而不是您似乎使用的玩家目标)加上枪与玩家中心的偏移量 - 然后它会出现在子弹线上。除了用于确定发射的子弹的初始位置的相同计算之外,这不需要三角函数。

另一种方法是将火力瞄准鼠标的实际位置。这比较复杂,但如果您有兴趣,我会解决它。

关于java - 在自顶向下游戏中使用三角函数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628389/

相关文章:

java - 将正弦波打印到控制台

c++ - 将十进制数保持在一个范围内

java计算两个时间戳之间的时间

java - 在catch block 中处理异常?

java - JPanel 数组的鼠标监听器

javascript - 将圆点拖到 < 0 和 > 360 之外

graphics - WebGL绘制透视图体积

javascript - 我需要帮助优化功能

CSS3 - 帮助创建两个 100% 页面宽度的特定 div 形状(见附图)

java - 实现多个条件逻辑的最佳模式