Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não entendi a lógica da colisão da bolinha

A primeira condição do if está clara para mim, ela verifica a colisão entre o extremo esquerdo da bolinha e o extremo direito do retângulo. No entanto, eu não entendo as condições seguintes. Na estrutura lógica de "&&" as partes tem que ser verdadeiras simultaneamente para a condição ser verdadeira e a parte de inverter ser executada, não? Não entendi o porquê verificar se a bolinha está acima e depois o inverso, isso daria uma contradição na lógica dos dos "&&"; se a bolinha está abaixo, não está acima e, por tanto, uma delas é falsa, não? Eu achei que deveria verificar se a bolinha está dentro dos limites da raquete. Enfim, estou bem confuso. Desde já, muito obrigado e desculpa pela pergunta confusa, haha.

1 resposta
solução!

Olá Rodolfo,

Pelo que entendi sua dúvida está na função:

function verificaColisaoRaquete() {
    if(xBolinha - raio < xRaquete + raquete Comprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) {
        velocidadeXBolinha *= -1;
)

Especificamente nestes parâmetros:

  yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete

Esse trecho serve para verificar se a bolinha está entre a parte superior e parte inferior do raquete. Sendo que

yBolinha - raio < yRaquete + raqueteAltura

verifica se a bolinha está acima do ponto inferior da raquete e

 yBolinha + raio > yRaquete

verifica se a bolinha está abaixo do ponto superior da raquete.

Lembrando que o ponto "0" do eixo Y está na parte superior da página, logo quando verificamos se um número é maior estamos verificando se ele esta em uma posição inferior do eixo Y.

Por fim, imaginando que a bolinha se encontra no centro da raquete, ela estará abaixo do ponto superior da raquete e acima do ponto inferior. Desta forma ambas situações retornaram 'true' para o if().

Espero ter ajudado.