gpt4 book ai didi

java - 使图像向鼠标光标移动

转载 作者:行者123 更新时间:2023-12-02 07:05:34 30 4
gpt4 key购买 nike

在游戏中,我想使用鼠标光标进行瞄准。这是我所知道的使项目符号移向鼠标光标的代码:

定位鼠标位置 私有(private) PointerInfo 鼠标 = MouseInfo.getPointerInfo(); 私有(private)点 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 度的路径向左移动,同样的情况也适用于向上、向下向右和向右上方。

最佳答案

为了使子弹直接向光标移动而不是总是以 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

关于java - 使图像向鼠标光标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16152710/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com