如何解决获取鼠标相对于 x y 坐标的方向
我正在开发一个 Java 游戏,我想在其中实现一些战斗。我想要实现战斗的方式是通过一个按钮,根据鼠标光标的位置,我想朝那个方向进攻。问题是,我无法仅通过 x 和 y 坐标检测相对于玩家的方向。如果我在没有任何数学或其他任何东西的情况下这样做,我会得到这些象限来测量方向:
^^ 这些行不通,因为那会让我:左上、右上、左下和右下。
我想要向上、向下、向左和向右,就像这样: 如果鼠标在这些象限之一,它会向那个方向攻击。这会让我向上、向右、向下、向左(按照上面显示的象限)
这是我的信息:鼠标 x 坐标,鼠标 Y 坐标,玩家 X 坐标,玩家 Y 坐标。
我确定有一些数学方法可以将这些象限 转换为这些象限 ,以便我可以检测鼠标相对于玩家的方向。
这是我用来检测鼠标方向的代码示例(此代码适用于 格式,因为我无法弄清楚另一个):
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 举报,一经查实,本站将立刻删除。