Я пытаюсь сделать арканоидоподобную игру, и теперь я столкнулся с проблемой столкновений. Как обычно, кирпичи - это прямоугольники (в моем случае - квадраты), а шар - это круг, так что все дело в ограничивающих прямоугольниках по оси.
Пока у меня есть тривиальный алгоритм обнаружения столкновений, но мне нужно знать, с какой стороны каждого кирпича попадает мяч. Например:
Пока у меня есть алгоритм, который проверяет, были ли поражены все стороны:
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, поэтому я не знаю, как решить.
Что обычно делается в этих случаях?