3
respostas

Não estou conseguindo fazer a bolinha colidir com a raquete do oponente.

Bom dia,

Ja analisei o código mas não estou conseguindo achar o erro, acho que deve ser algum erro de lógica mas não estou encontrando o erro, se alguem puder ajudar serei extremamente grato.

esse é o código que faz colisão com a minha raquete (funcionando)...

function verificaColisaoMinhaRaquete() { 
  if (xBolinha - raio < xMinhaRaquete + larguraRaquete && yBolinha - raio < yMinhaRaquete + alturaRaquete && yBolinha + raio > yMinhaRaquete ){
    velocidadeXBolinha *= -1;
  }
}

esse é o código da do oponente...

function verificaColisaoRaqueteOponente() { 
  if (xBolinha - raio < xOponenteRaquete + larguraRaquete && yBolinha - raio < yOponenteRaquete + alturaRaquete && yBolinha + raio > yOponenteRaquete ){
    velocidadeXBolinha *= -1;
  }

essa é a função, eu quero fazer a função mesmo não quero importar solução ja pronta como no curso, até mesmo pq estou fazendo pra aprender como faz e não curto muito a idéia pelo menos por enquanto de pegar código pronto.

3 respostas

Oi, Marllon! Tudo bem?

Para conseguirmos fazer com que a a função verificaColisaoRaqueteOponente() funcione como o esperado, devemos nos atentar a um pequeno detalhe: a posição da raquete do oponente, que se encontra ao lado direito da tela.

Logo, os comandos relacionados ao eixo y da raquete, podem continuar os mesmos, pois ambas as raquetes possuem a mesma lógica de interação com a bolinha, entretanto, os comandos relacionados ao eixo x devem ser adaptados, pois nesse aspecto as raquetes possuem diferentes localizações.

Dessa forma, devemos apenas trocar o comando xBolinha - raio < xOponenteRaquete + larguraRaquete por xBolinha + raio > xOponenteRaquete, visto que xBolinha - raio corresponde à extremidade esquerda da bolinha, enquanto xBolinha + raio corresponde à extremidade direita, além diso, xOponenteRaquete + larguraRaquete corresponde à extremidade direita da raquete do oponente, enquanto xOponenteRaquete corresponde à extremidade esquerda.

Com as alterações citadas acima o nosso código deve ficar, então, da seguinte maneira:

function verificaColisaoRaqueteOponente() { 
  if (xBolinha + raio >  xOponenteRaquete && yBolinha - raio < yOponenteRaquete + alturaRaquete && yBolinha + raio > yOponenteRaquete ){
    velocidadeXBolinha *= -1;
  }

Espero ter ajudado!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Resolveu, esta funcionando da forma correta, muito obrigado pela ajuda... Salvou !!

Nossa Sarah...

Ajudou muito aqui também, muito obrigado pela ajuda!