所以我正在创建一个突破游戏,一切都很顺利,除了与砖块的某些碰撞。我不知道如何检测球是从左侧还是从右侧击中砖块。我正在尝试创建一个 if 语句,其内容为“如果球从左侧或右侧击中砖块,xSpeed 乘以 -1,否则如果球从顶部或底部击中砖块,y 乘以 - 1." 这很容易做到,但是检测砖块被击中的位置让我很难过。我正在使用 javafx。我确定这很容易,我只是想弄清楚我应该如何开始。
问问题
703 次
2 回答
0
这不是 java fx 特定的:
您可能已经设置了带有 grid_x 和 grid_y 坐标的网格,以指示砖块或空点。
发生碰撞时,您知道球 Bl_xy 的网格位置(必须是空点)和被击中的砖块 Br_xy 的网格位置。
现在,如果空点 Bl_xy 在砖块 Br_xy 的上方或下方,则需要更改球的垂直速度分量。
如果空点 Bl_xy 位于 Br_xy 的左侧或右侧,则更改水平速度。
我希望这对你的超级秘密学校项目有所帮助。
于 2015-04-28T22:53:48.623 回答
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");
}
于 2015-04-28T22:36:28.877 回答