微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取鼠标相对于 x y 坐标的方向

如何解决获取鼠标相对于 x y 坐标的方向

我正在开发一个 Java 游戏,我想在其中实现一些战斗。我想要实现战斗的方式是通过一个按钮,根据鼠标光标的位置,我想朝那个方向进攻。问题是,我无法仅通过 x 和 y 坐标检测相对于玩家的方向。如果我在没有任何数学或其他任何东西的情况下这样做,我会得到这些象限来测量方向:

Cross format

^^ 这些行不通,因为那会让我:左上、右上、左下和右下。

我想要向上、向下、向左和向右,就像这样:

X format

如果鼠标在这些象限之一,它会向那个方向攻击。这会让我向上、向右、向下、向左(按照上面显示的象限)

这是我的信息:鼠标 x 坐标,鼠标 Y 坐标,玩家 X 坐标,玩家 Y 坐标。

我确定有一些数学方法可以将这些象限

Cross format of collision detecting

转换为这些象限

X format

,以便我可以检测鼠标相对于玩家的方向。

这是我用来检测鼠标方向的代码示例(此代码适用于

Cross format

格式,因为我无法弄清楚另一个):

private Direction getMouseRelativeDirection() {
    if(mouseX > x && mouseY < y)
        return Direction.topRight;
    if(mouseX > x && mouseY > y)
        return Direction.bottomright;
    if(mouseX < x && mouseY < y)
        return Direction.topLeft;
    if(mouseX < x && mouseY > y)
        return Direction.bottomLeft;

//to prevent errors if the mouse isn't in a quadrant,just return null
    return null;
}

我希望我提供了足够的信息,让人们能够弄清楚方向数学,但如果您需要更多信息,请告诉我!

编辑:

我通过在 google 上的一些搜索和我自己的故障排除解决了这个问题.. 结果证明使用行公式来获取相对于鼠标的每一行是要走的路。

解决方法

也许它会帮助您计算两点之间的角度。

double angle = Math.toDegrees(Math.atan2(mouseY - y,mouseX - x));
if(angle < 0) { angle += 360; } // angle always >= 0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。