所以我正在创建一个突破游戏,一切都很顺利,除了与砖块的某些碰撞。 我不知道如何检测球是从左边还是右边撞到砖块。 我正在尝试创建一个 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向左或向右,请更改水平速度。
我希望这对你的超级秘密学校项目有所帮助。