3
respostas

Alguem pode me ajudar com essa parte do código?

Quero que fique claro na minha cabeça em uma analogia matemática essa function. Achei um pouco confuso.

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

3 respostas

Vou tentar explicar xD. Primeiro vou organizar o código para que a comparação do if fique dividida em 3 partes.

function verificaColisaoRaquete(){
        if (xBolinha - raio < xRaquete + raqueteComprimento &&  // Parte 1
            yBolinha - raio < yRaquete + raqueteAltura && // Parte 2
            yBolinha + raio > yRaquete) // Parte 3
            { 
                velocidadeXBolinha *= -1; 
        } 
}

Parte 1: O retângulo verde é a raquete, o ponto azul é o ponto de origem da raquete. O círculo vermelho é a bolinha, o ponto preto é o ponto de origem da bolinha.

Gráfico exibindo o momento em que a coordenada x da bolinha menos raio é igual à coordenada x da raquete mais comprimento

Nesse momentoxBolinha - raio é igual axRaquete + raqueteComprimento. Ou seja, a 1ª condição doif ainda não é verdadeira, porém se a bolinha andar mais 1 pixel para a esquerda a condição será verdadeira.

Parte 2:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A mesma lógica, se a bolinha estiver um pixel "mais acima", sua 2ª condição será verdadeira. Nos resta analisar só a 3ª condição.

Parte 3:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se a bolinha estiver 1 pixel abaixo, a condição será verdadeira.

Se as 3 condições forem verdadeiras isso quer dizer que:

  • A bolinha ultrapassou a raquete horizontalmente.
  • A posição vertical da bolinha está contida entre os extremos verticais da raquete.

Logo, a bolinha deve ser refletida. Explicação longa, mas espero que ajude! :)

eu acho que agora eu entendi rsrs

Explicação ficou perfeita. Muito Obrigado