所以我创造了一个突破游戏,一切都很顺利,除了与砖块的某些碰撞。我不知道如何检测球是否从左侧或右侧击中砖块。我试图创建一个if语句来读取"如果球从左边或右边撞到砖块,xSpeed乘以-1,否则如果球从顶部或底部撞到砖块, y乘以-1。"这很容易做到,但是检测砖被击中的地方让我感到难过。我正在使用javafx。我确定它很简单,我想知道我应该如何开始。
答案 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向左或向右,则更改水平速度。
我希望这对你的超级秘密学校项目有所帮助。