Olá, Mateus! Tudo bom contigo?
Desde já, peço desculpas pela demora em retornar!
Vamos analisar com carinho cada condição da estrutura if
?
Primeira Condição
xBolinha - raio < xRaquete + raqueteComprimento
De maneira geral, o trecho de código acima tem como objetivo verificar a colisão horizontal da raquete com a bolinha. Vejamos a lógica por trás disso:
xBolinha
faz referência ao centro da bolinha;- Quando pegamos o centro da bolinha e diminuímos o valor pelo
raio
, chegamos na borda esquerda da bolinha (coordenada que servirá de base para verificação da colisão); xRaquete
é a variável cujo valor armazenado representa o início do desenho da raquete (horizontalmente). Quando somado à raqueteComprimento
, temos como valor a localização da borda direita da raquete;- Se
xBolinha - raio
for inferior a xRaquete + raqueteComprimento
, então significa dizer que a posição horizontal da borda da bolinha ultrapassou a coordenada x da borda da raquete, ou seja, houve colisão.
Segunda Condição
yBolinha - raio < yRaquete + raqueteAltura
Por intermédio dessa condição, será analisado se a bolinha encontra-se de fato no espaço vertical ocupado pela raquete. Vejamos como isso ocorre:
yBolinha
faz referência ao centro da bolinha (coordenada y);- A subtração entre
yBolinha
e raio
resulta na borda superior da bolinha; yRaquete
é a posição vertical onde o desenho da raquete é iniciado. Quando essa variável é somada à raqueteAltura
, temos como valor a localização da borda inferior da raquete.- Se a
yBolinha - raio
for inferior a yRaquete + raqueteAltura
, então a bolinha colidiu com o espaço ocupado pela raquete. Se não tivéssemos isso, qualquer ponto vertical abaixo da raquete, quando tocado pela bola, geraria a ação da colisão, e não é isso que desejamos!
Terceira Condição
yBolinha + raio > yRaquete
Por fim, temos a última condição, a qual também serve para verificar a colisão vertical da bolinha com a raquete. Vamos entendê-la?
- A soma entre
yBolinha
e o raio
resulta na borda inferior da bolinha; - Se a borda inferior da bolinha for superior à localização da parte superior da raquete (
yRaquete
), significa que a bolinha não está acima da raquete. Se não tivéssemos tal verificação, teríamos um problema semelhante ao discutido na outra condição!
Com a união de todas essas condições, construímos um código que não só verifica a colisão horizontal, mas também a vertical, da bolinha com a raquete!
Espero que tenha compreendido minha explicação. Caso surja alguma dúvida, sinta-se confortável para enviá-la no fórum! Ficarei contente em te ajudar.
Grande abraço, Mateus!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.