如何从侧面边缘实现球与正方形的碰撞检测



下面的代码检测到两个对象之间的碰撞,但它只会沿着球的y轴改变方向。有人能帮助如何实现侧面碰撞吗?就像如果它击中了侧边,球的方向应该只在x轴上改变。

bricks.forEach(column=>{
column.forEach(brick=>{
if (brick.visible){
if(ball.x-ball.size>brick.x && ball.x+ball.size<brick.x+brick.w && ball.y+ball.size>brick.y && ball.y-ball.size<brick.y+brick.h)
{
ball.dy*=-1;
brick.visible=false;
}
}
})
})

我添加了一些东西,但它在处理边缘反弹方面效果不佳。有人能就处理collsion的更好方法提出一些建议吗?

bricks.forEach(column=>{
column.forEach(brick=>{
if (brick.visible){
if(ball.x-ball.size>brick.x && ball.x+ball.size<brick.x+brick.w && ball.y+ball.size+ball.speed>brick.y && ball.y-ball.size+ball.speed<brick.y+brick.h)
{
ball.dy*=-1;
brick.visible=false;
}
if(ball.y-ball.size>brick.y && ball.y+ball.size<brick.y+brick.h && ball.x+ball.size+ball.speed>brick.x && ball.x-ball.size+ball.speed<brick.x+brick.w)
{
ball.dx*=-1;
brick.visible=false;
}
}
})
})
}

最新更新