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

[Bug] Bolinha não colide na Raquete Oponente

Olá, Boa tarde! Gostaria de ajuda para resolver esse Bug. Estou fazendo o código sem o uso da biblioteca, e a bolinha não está colidindo. Fico no aguardo para obter respostas.

Meu código: https://editor.p5js.org/gabeshonorato65/sketches/zSMu_GBfO

1 resposta
solução!

Oii, tudo bem por aí?

Para considerar a colisão da bolinha com a raquete do oponente sem o uso da biblioteca, precisamos criar outra função. Isso se faz necessário por estamos trabalhando no plano cartesiano e os cálculos envolvidos na função tem como retorno valores que significam um lugar específico dentro do canva. Veja esse trecho de código com as duas funções:

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

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

Percebe que a primeira condição, que verifica o valor de x, está com operadores diferentes?

Quando temos xBolinha - raio < xRaquete + raqueteComprimento, como em verificaColisaoRaquete, o retorno será a colisão da parte esquerda da bolinha com a parte direita da raquete. Quando se trata da colisão com o oponente, buscamos o valor que seja o ponto de encontro entre a parte direita da bolinha com a parte esquerda da raquete. Por isso xBolinha + raio > xRaqueteOponente - raqueteComprimento.

Lembre-se de retirar os parâmetros e chamar a nova função no draw()!

Vou deixar aqui um artigo bem legal que fala sobre como funciona o plano cartesiano no P5.JS e que pode ajudar a compreender como funcionam esses cálculos condicionais:

Forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!