自上而下的射手。我怎么能让子弹向玩家瞄准的方向射击?

时间:2013-11-23 16:40:09

标签: java rotation drawing

我有一个由矩形制成的播放器。我目前拥有它,所以它总是针对鼠标。我希望玩家可以直接向鼠标发射子弹,但我不确定用什么方程式使子弹沿x和y移动正确的数量,以便它符合它所针对的点。

这就是我目前对玩家的看法。

public void playerImage(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    theta = Math.atan2(playerY - InputHandler.mouseY + playerHeight / 2,
            playerX - InputHandler.mouseX + playerWidth / 2) - Math.PI / 2;
    g2d.rotate(theta, playerX + playerWidth / 2, playerY + playerHeight / 2);
    g2d.setColor(Color.blue.darker());
    // Main body
    g2d.drawRect(playerX, playerY, playerWidth, playerHeight);
    // Left arm
    g2d.drawRect(playerX - playerWidth / 2, playerY, playerWidth / 2,
            playerHeight);
    g2d.fillRect(playerX - playerWidth / 2, playerY, playerWidth / 2,
            playerHeight);
    // Right arm
    g2d.drawRect(playerX + playerWidth, playerY, playerWidth / 2,
            playerHeight);
    g2d.fillRect(playerX + playerWidth, playerY, playerWidth / 2,
            playerHeight);
    g2d.setColor(Color.red);
    g2d.fillRect(playerX, playerY, playerWidth, playerHeight);

}

1 个答案:

答案 0 :(得分:0)

使用玩家所在的位置以及子弹应该移动的位置,您可以定义穿过它们的线。这将为您提供类似f(x)= a * x + b的等式,然后您可以使用它来计算路径的坐标。

同时检查wiki page