Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida

Olá, nada errado no meu código por enquanto, mas estou em dúvida quanto a funcionalidade da função verificaColisaoRaquete. Não consigo imaginar um diagrama para entender a lógica da função

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1
  }
}
2 respostas
solução!

A função verifica se a bolinha está entre os limites da raquete (y1 e y2), sendo que y1 = yRaquete e y2= yRaquete + raqueteAltura

se a bolinha, ou seja, yBolinha, estiver entre esses limitantes, a velocidade da bolinha irá trocar de sinal (alterar o sentido de movimento) assim que a bolinha atingir o lado da raquete (xRaquete + raqueteComprimento) que também é uma das condições.

é necessário somar ou subtrair o raio da posição da bolinha, de forma a considerar o tamanho dela, por isso, quando comparamos com o limitante inferior (y2) devemos somar o raio e quando comparamos com o limite superior da raquete fazemos (yBolinha - raio). Por esse msmo motivo fazemos (xBolinha - raio), pois estamos detectando uma colisão no lado esquerdo da bolinha, caso fosse contato com a raquete do adversário, faríamos (xBolinha + raio) pois estaríamos nos referindo ao lado direito da bolinha.

Segue uma imagem que eu fiz para tentar ilustrar minha explicação, espero que ajude.

Gráficos mostrando as variáveis de posição e tamanho da bolinha e raquete

Entendi, me perdi justamente na alternância entre positivo e negativo da Bolinha na função e qdo observei nessa visão macro compreendi. Valeu!