突破游戏中的碰撞



所以我正在创建一个突破游戏,一切都很顺利,除了与砖块的某些碰撞。 我不知道如何检测球是从左边还是右边撞到砖块。 我正在尝试创建一个 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");
        }

这不是特定于java fx的:

您可能已经设置了带有grid_x和grid_y坐标的网格,以指示砖块或空白点。

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

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

如果空点Bl_xy从Br_xy向左或向右,请更改水平速度。

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

相关内容

  • 没有找到相关文章

最新更新