我的问题可能很简单。我今天大部分时间都在考虑一种算法(这很可能是几个 if 语句),它将确定鼠标指向的方向并朝那个方向发射子弹。我已经对子弹进行了测试,以确保它们通过向定义的方向射击来射击。
我将如何计算鼠标是在播放器的左侧、右侧、顶部、底部还是在播放器的角落?
已解决:感谢您的所有帮助,但经过一天的思考,我想出了一个自己的方法。我所做的是使用 if 语句来确定当我按下鼠标时,它是否会与播放器的顶部、底部、右侧、左侧或角落发生碰撞。无论如何,这是我的代码。PS我使用变量x1作为mousex,y1作为mousey,x作为playerx,y作为player 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;
}