Java 突破游戏中的碰撞

Java 突破游戏中的碰撞,java,javafx,breakout,Java,Javafx,Breakout,所以我正在创建一个突破游戏,一切都进行得很顺利,除了与砖块的某些碰撞。我不知道如何检测球是从左边还是从右边击中砖块。我正在尝试创建一个if语句,该语句的内容是“如果球从左侧或右侧击中砖块,则xSpeed乘以-1,否则如果球从顶部或底部击中砖块,则y乘以-1。”这很容易做到,但检测砖块击中的位置让我感到困惑。我正在使用javafx。我确信这很容易,我只是想弄清楚我应该如何开始。在砖块和球周围制作一个碰撞框,并比较位置值,类似这样: Rectangle brickCollision

所以我正在创建一个突破游戏,一切都进行得很顺利,除了与砖块的某些碰撞。我不知道如何检测球是从左边还是从右边击中砖块。我正在尝试创建一个if语句,该语句的内容是“如果球从左侧或右侧击中砖块,则xSpeed乘以-1,否则如果球从顶部或底部击中砖块,则y乘以-1。”这很容易做到,但检测砖块击中的位置让我感到困惑。我正在使用javafx。我确信这很容易,我只是想弄清楚我应该如何开始。

在砖块和球周围制作一个碰撞框,并比较位置值,类似这样:

        Rectangle brickCollision = new Rectangle(x, y, w, h);
        Rectangle playerCollision = new Rectangle(x, y, w, h);

        //example (collision for one side)
        if(playerCollision .x + playerCollision.w > brickCollision.x && playerCollision.x < brickCollision.x + brickCollision.w){
           System.out.println("Collision");
        }
Rectangle brickCollision=新矩形(x,y,w,h);
矩形播放集合=新矩形(x、y、w、h);
//示例(一侧碰撞)
如果(playerCollision.x+playerCollision.w>brickCollision.x&&playerCollision.x
这不是特定于java fx的:

您可能已经为栅格设置了栅格x和栅格y坐标,以指示砖块或空位

发生碰撞时,您知道球Bl_xy的栅格位置(必须是一个空点)和被击中的砖块Br_xy的栅格位置

现在,如果空白点Bl_xy位于砖Br_xy的上方或下方,则需要更改球的垂直速度分量

如果空位Bl_xy位于Br_xy的左侧或右侧,请更改水平速度


我希望这对你的超级秘密学校项目有所帮助。

你能发布你正在使用的碰撞检测代码吗?这可能会帮助你得到一个更具体的答案。我不能,我这样做是为了学校的一个项目,我们不允许发布代码。我只需要一个大概的答案,在我得到一个想法后,我可能就可以编写代码了。我现在可以检测碰撞,我的问题是我不知道球击中哪一边。我想我可以制造四次碰撞,每边一次,然后从那里开始,但这可能会变得复杂。有更简单的方法吗?我不认为太复杂。您只需要两个分支,一个用于顶部/底部,另一个用于左/右碰撞。