我正在尝试制作一个类似打砖块的游戏,现在我遇到了与碰撞有关的问题。通常情况下,砖块是矩形(在我的情况下,是正方形),而球是圆形,因此它们都是基于轴对齐边界框进行碰撞检测。
到目前为止,我已经得到了简单的碰撞检测算法,但我需要知道球撞击每个砖块的哪一面。例如:
到目前为止,我已经有了一个算法,可以检查是否撞击了每一面:
到目前为止,我已经得到了简单的碰撞检测算法,但我需要知道球撞击每个砖块的哪一面。例如:
![Collision cases](https://istack.dev59.com/H0YA1.webp)
up = left = right = down = 0;
if(mouse.left < brick.left && brick.left < mouse.right && mouse.right < brick.right){
left = 1;
}
if(brick.left < mouse.left && mouse.left < brick.right && brick.right < mouse.right){
right = 1;
}
if(mouse.top < brick.top && brick.top < mouse.bottom && mouse.bottom < brick.bottom){
up = 1;
}
if(brick .top < mouse.top && mouse.top < brick.bottom && brick.bottom < mouse.bottom){
down = 1;
}
但是在接近边角的碰撞中,例如图像中的第三个碰撞,会设置两个标志(例如,左和下)为1,因此我不知道该如何决定。
在这些情况下通常会怎么做?