突破游戏中的碰撞

时间:2015-04-28 22:26:09

标签: java javafx breakout

所以我创造了一个突破游戏,一切都很顺利,除了与砖块的某些碰撞。我不知道如何检测球是否从左侧或右侧击中砖块。我试图创建一个if语句来读取"如果球从左边或右边撞到砖块,xSpeed乘以-1,否则如果球从顶部或底部撞到砖块, y乘以-1。"这很容易做到,但是检测砖被击中的地方让我感到难过。我正在使用javafx。我确定它很简单,我想知道我应该如何开始。

2 个答案:

答案 0 :(得分:0)

在砖块和球周围制作一个碰撞盒并比较位置值,如下所示:

        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");
        }

答案 1 :(得分:0)

这不是java fx特有的:

你可能有一个网格设置,grid_x和grid_y坐标表示一个砖块或空白点。

当发生碰撞时,你知道球Bl_xy(必须是一个空点)的网格位置以及被击中的砖Br_xy的网格位置。

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

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

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