Detecção de colisão: objeto arredondado
Estou desenvolvendo um jogo Java (mas a linguagem de desenvolvimento não importa), incluindo objetos arredondados como bolas ou discos, e agora trabalhando em colisões. Eu uso um temporizador, então em cada quadro eu verifico se uma colisão acontece.
Aqui está um gráfico que representa a parte superior direita de um objeto.
O centro do objeto é representado pelo ponto [0,0], seu raio é 10px e as unidades são pixels.
Agora, se meu objeto (por exemplo,obj_1
) é quadrada / em losango (linha azul), para descobrir se outra (obj_2
colide eu só tenho que pegar suas coordenadas e checarMath.abs(obj_1.x - obj_2.x) + Math.abs(obj_1.y - obj_2.y) <= radius
Eu saberei se houver uma colisão.
Mas o problema é mais complicado com uma forma de círculo (linha vermelha), porque ocupa mais espaço e esse espaço ocupado não é limitado por uma linha reta. Claro que terei que arredondar alguns valores (por exemplo, no gráfico anterior, se eu quiser verificar uma colisão emx = 2
Eu terei que arredondar o valor de y que parece 9,5 para 10). Mas eu simplesmente não tenho ideia de como obter essa fórmula. Qualquer ajuda será muito apreciada.