Oi, João! Tudo bem?
Desculpa a demora por um retorno!
Conferi o seu código, muito bom! Parabéns pelo desempenho! Porém tenho algumas observações sobre ele:
Para evitar problemas e facilitar a leitura e alteração do código por outras pessoas é recomendado que escrevamos a declaração de cada variável em linhas diferentes/ separadas, no caso do seu código, podemos notar que ao colocá-lo no p5 o editor lê toda a linha como um comentário, não lendo então as variáveis declaradas. Além de termos atenção ao colocar um ponto e vírgula (;) ao final da declaração de cada uma, o que não identifiquei no seu código na declaração das variáveis da velocidade da bolinha e da raquete.
Somado a isso, como estamos usando uma biblioteca para executar a função de verificar a colisão da raquete, devemos deixar a chamada da função verificaColisaoRaquete() em draw() comentada.
É necessário também que se adicione na condicional dentro dos ifs da função verificaColisaoBorda() a diminuição do raio das coordenadas xBolinha e yBolinha, dessa forma:
function verificaColisaoBorda() {
if (xBolinha + raio > width || xBolinha - raio < 0) {
velocidadeXBolinha *= -1;
}
if (yBolinha + raio > height || yBolinha - raio < 0) {
velocidadeYBolinha *= -1;
}
}
Segue abaixo o código revisado com as alterações citadas acima:
//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro/2;
//velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6 ;
//variáveis da raquete
let xRaquete = 5 ;
let yRaquete = 150;
let raqueteComprimento = 10 ;
let raqueteAltura = 90;
let colidiu = false;
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
mostraBolinha();
movimentaBolinha();
verificaColisaoBorda();
mostraRaquete();
movimentaMinhaRaquete();
//verificaColisaoRaquete();
colisaoMinhaRaqueteBiblioteca();
}
function mostraBolinha(){
circle(xBolinha,yBolinha,diametro);
}
function movimentaBolinha(){
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
function verificaColisaoBorda(){
if( xBolinha + raio > width || xBolinha - raio < 0){
velocidadeXBolinha *= -1;
}
if(yBolinha + raio > height || yBolinha - raio < 0){
velocidadeYBolinha *= -1;
}
}
function mostraRaquete(){ rect(xRaquete,yRaquete,raqueteComprimento,raqueteAltura);
}
function movimentaMinhaRaquete(){
if (keyIsDown(UP_ARROW)){
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)){
yRaquete += 10;
}
}
function verificaColisaoRaquete(){
if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){ velocidadeXBolinha *= -1; }
}
function colisaoMinhaRaqueteBiblioteca(){
colidiu =
collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
if (colidiu){
velocidadeXBolinha *= -1;
}
}
Espero ter ajudado! Qualquer dúvida estarei a sua disposição!
Um forte abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!