java - 在 Java/Slick2D 中向鼠标位置射击子弹

标签 java math mouseevent slick2d

我正在尝试实现一种将子弹射向鼠标位置的方法。我不知道它的数学或逻辑。这是一款 2D 俯视游戏。我让子弹向右发射并在某一点结束。我需要知道向鼠标位置开火的逻辑,而不是仅仅向 x 位置加 1。

最佳答案

使用 atan2 找到子弹原点和鼠标光标之间的角度。然后使用 Sin 和 Cos 计算子弹的 x 和 y 速度。

伪代码

    public void ShootBullet()
    {
        double bulletVelocity = 1.0; //however fast you want your bullet to travel
        //mouseX/Y = current x/y location of the mouse
        //originX/Y = x/y location of where the bullet is being shot from
        double angle = Math.Atan2(mouseX - originX, mouseY - originY);
        double xVelocity = (bulletVelocity) * Math.Cos(angle);
        double yVelocity = (bulletVelocity) * Math.Sin(angle);
    }

关于java - 在 Java/Slick2D 中向鼠标位置射击子弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122380/

相关文章:

php - 从 ids 数组生成唯一的固定整数 ids

javascript - 使用 Javascript 的 Codewars 除法 Kata 生成的结果不能被 6 整除

javascript - 通过元素传递鼠标悬停

java - Mouslistener 造成问题

java - 如何在 java 中的字符串中找到 '|' 模式?

java - 使用 cxf 和 java 优先方法编写异步服务

python - 具有间隙的信号的功率谱密度?

python - 如何通过鼠标中键在QGraphicsView 中滚动QGraphicsScene?

JavaFX Maven 插件 : com. zenjava - jfx :jar to include all depedencies?

java - 如何在Java中沿其指向的方向移动 vector 图形