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

[Bug] A bolinha não roda quando eu habilito a função de verificar a colisão com a raquete do openente

A função que faz a bolinha colidir com a minha raquete funciona bem. Agora a função que faz com que a bolinha colidi com a raquete do oponente deixa a bolinha bugada! A bolinha fica no meio se movimentando como se a raquete estivesse colidindo. Alguém pode me ajudar?

Essas são as variáveis

//variáveis da raquete
let xRaquete = 5
let yRaquete = 150
let comprimentoRaquete = 10
let alturaRaquete = 90

// variáveis da raquete do oponente
let xOponente = 585
let yOponente = 150
let velocidadeYOponente; 

Esse é o código da colisão da minha raquete, ele funciona perfeitamente:


function verificaColisaoRaquete() {
  if (xBolinha - raio < xRaquete + comprimentoRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete) {
    velocidadeX *= -1
    somRaquetada.play()
  }
}

Esse é o da raquete do oponente, ele faz a bolinha ficar bugada no meio:

function verificaColisaoRaqueteOponente() {
  if (xBolinha - raio < xOponente + comprimentoRaquete && yBolinha - raio < yOponente + alturaRaquete && yBolinha + raio > yOponente) {
    velocidadeX *= -1
    somRaquetada.play()
  }
}
2 respostas
solução!

Oi, Thaynara! Tudo bem?

Para resolvermos o problema precisamos apenas fazer algumas pequenas alterações na função verificaColisaoRaqueteOponente(), visto que, como estamos lidando com a raquete do oponente (posicionada ao lado direito da tela, ao contrário da posição da raquete do jogador) a posição no eixo x da extremidade direita da bolinha precisa ser maior que a posição no eixo x da raquete do oponente para que haja colisão.

Dessa forma, deixaremos a função da seguinte maneira:

function verificaColisaoRaqueteOponente() {
  if (xBolinha + raio > xOponente && 
      yBolinha - raio < yOponente + alturaRaquete && 
      yBolinha + raio > yOponente) {
    velocidadeX *= -1
    somRaquetada.play()
  }
}

Espero ter ajudado! Caso reste alguma dúvida em relação ao problema ou conteúdo, sinta-se à vontade para comunicar, estou à disposição!

Um forte abraço e bons estudos!

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

Muito obrigado! Deu certinho, agora o jogo está funcionando!