使图像朝向鼠标光标移动

时间:2013-04-22 17:05:54

标签: java image mouse

在我制作的游戏中,我想用鼠标光标瞄准。这是我知道使子弹移向鼠标光标的代码:

找到鼠标位置     private PointerInfo mouse = MouseInfo.getPointerInfo();     private Point point = new Point(mouse.getLocation()); 让子弹有点朝着鼠标光标移动

if(point.getX() > player.getX()){
        setX(getX() + 1);
}
if(point.getX() < player.getX()){
        setX(getX() - 1);
}
if(point.getY() > player.getY()){
        setY(getY() + 1);
}
if(point.getY() < player.getY()){
        setY(getY() - 1);
}

问题是子弹不会精确地移动到鼠标光标,但如果鼠标光标位于该区域的某个位置,则向左移动45度路径,同样的事情向左移动,向下移动在右边和右边。

1 个答案:

答案 0 :(得分:2)

为了使子弹直接朝向光标移动而不是始终在45度路径中,使用double表示X和Y的内部表示。此外,因为你想让子弹朝某个方向前进,你需要在第一次创建子弹时计算X速度和Y速度。

例如:

double deltaX = player.getX() - point.getX();
double deltaY = player.getY() - point.getY();
double magnitude = Math.sqrt(deltaX*deltaX + deltaY*deltaY);

// It's possible for magnitude to be zero (cursor is over the person)
// Decide what you want the default direction to be to handle that case
double xVelocity = 1;
double yVelocity = 0;
if (magnitude != 0) {
    xVelocity = deltaX / magnitude;
    yVelocity = deltaY / magnitude;
}

使用首次创建项目符号时计算出的速度,每次打勾时只需使用xPosition += xVelocityyPosition += yVelocity