Oii Maria, tudo bem?
Para a verificação da colisão da bolinha com as raquetes, eu sugiro que você utilize a biblioteca p5.collide2d. As bibliotecas são conjuntos de códigos que resolvem problemas comuns e podem nos ajudar muito em situações assim.
Para realizar a importação da biblioteca, podemos realizar o seguinte passo a passo:
- Ir para https://editor.p5js.org/,
- Clicar em ”Help & Feedback > Reference > Libraries";
- Buscar por "p5.collide2d";
- Acessar o repositório no Github da Biblioteca;
- Selecionar o arquivo "p5.collide2d.js";
- Fazer o download desse código zipado;
- Descompactar o zip em uma pasta de sua preferência;
- No p5.js, clicar em "project folder";
- Selecionar "Upload file";
- Adicionar o arquivo "p5.collide2d.js" ;
- Clicar em "Open";
- Adicionar
<script src="p5.collide2d.js"></script>
ao index.html, para que nosso arquivo seja lido.
O próximo passo é substituir a função verificaColisaoRaquete()
. Exclua o seguinte trecho:
function verificaColisaoRaquete(){
if (xBolinha - raio < xRaquete + raqueteComprimento &&
yBolinha - raio < yRaquete + raqueteAltura &&
yBolinha + raio > yRaquete){
velocidadeXBolinha *= -1;
}
}
E, no mesmo lugar, cole esse trecho. Essa função foi construída a partir da documentação da biblioteca que baixamos e reconhece a colisão entre círculos e retângulos:
function verificaColisaoRaquete(x, y) {
colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
if (colidiu) {
velocidadeXBolinha *= -1;
}
}
Assim a colisão deve acontecer como esperado.
Percebi também que seu placar não está marcando pontos! Para isso, é só chamar a função marcaPonto()
dentro da função draw()
, no começo do código.
Me conta se funcionou, Maria! Se ficar alguma dúvida, estou a disposição.
Forte abraço.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!