gpt4 book ai didi

Java 2d 用鼠标拍摄方向

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:24 25 4
gpt4 key购买 nike

我的问题可能很简单。我今天大部分时间都在思考一种算法(这很可能是一对 if 语句),它将确定鼠标指向的方向并朝那个方向发射子弹。我已经对子弹进行了测试,以确保它们通过向指定方向射击来射击。

我将如何计算鼠标是在播放器的左侧、右侧、顶部、底部还是在播放器的角上?

已解决:感谢您的帮助,但经过一天的思考,我想出了一个办法。我所做的是使用 if 语句来确定何时按下鼠标,它是否会与播放器的顶部、底部、右侧、左侧或角落发生碰撞。无论如何,这是我的代码。附言我使用变量 x1 作为 mousex,y1 作为 mousey,x 作为 playerx,y 作为玩家 y。我拥有的唯一其他变量是 dx 和 dy,但您应该知道它们的作用。

//top
if (x1 > x && x1 < x + 40 && y1 > y - 250 && y1 < y){
dy = -1;
dx = 0;
}
//right
if (x1 > x + 40 && x1 < x + 250 && y1 > y && y1 < y + 40){
dx = 1;
dy = 0;
}
//bottom
if (x1 > x && x1 < x + 40 && y1 > y+40 && y1 < y+250){
dy = 1;
dx = 0;
}
//left
if (x1 < x && x1 > x - 250 && y1 > y && y1 < y + 40){
dx = -1;
dy = 0;
}
//top right corner
if (x1 > x + 40 && x1 < x + 250 && y1 > y - 250 && y1 < y){
dx = 1;
dy = -1;
}
//top left corner
if (x1 < x && x1 > x - 250 && y1 > y - 250 && y1 < y){
dx = -1;
dy = -1;
}
//bottom right corner
if (x1 > x + 40 && x1 < x + 250 && y1 > y + 40 && y1 < y + 250){
dx = 1;
dy = 1;
}
//bottom left corner
if (x1 < x && x1 > x - 250 && y1 > y + 40 && y1 < y + 250){
dx = -1;
dy = 1;
}

最佳答案

如果你想在按下鼠标按钮时实现射击,你必须实现鼠标移动 Action 监听器。

简单的直线方程即可。

解决方案:在按下按钮时获取初始点(x0,y0)。当鼠标在按下时移动时,获取 (x1,y1) 鼠标移动的点(这会不断变化) - 获取线方程 - (你有 2 个点,所以找到 slope 然后用一个点得到直线的方程)。

现在子弹发射的方向是垂直于这条通过 (x1,y1) 的线。所以你可以在已知另一个方程的情况下找到这条垂线的方程。现在知道它是否必须向上或向下发射是相对于找出枪指向哪一侧(方向存储在变量中)

所有这一切之后,当鼠标仍然移动时,旧点现在将是 (x1,y1),新点将是 (x2,y2) 并且您继续实现这些变化。

关于Java 2d 用鼠标拍摄方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559017/

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