Tentei aplicar a solução aqui abaixo, para um caso similar, mas não resultou em nada.
//Posição no SetUp
let xBolinha = 300;
let yBolinha = 200;
//Propriedades
let diametro = 15;
let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;
let raio = diametro / 2;
let velocidadeYOponente;
//Posição no SetUp
let xMinhaRaquete = 5;
let yMinhaRaquete = 150;
let yRaqueteOponente = 150;
let xRaqueteOponente = 585;
//Dimensões Raquete
let wRaquete = 10;
let hRaquete = 80;
//Placar do Jogo
let meusPontos = 0;
let pontosOponente = 0;
function setup() {
createCanvas(600, 400);
}
let colidiu = false;
function draw() {
background('rgba(100%,0%,100%,0.5)');
mostrarBolinha();
movimentarBolinha();
colisaoBolinhaBorda();
mostrarRaquete(xMinhaRaquete, yMinhaRaquete);
movimentarMinhaRaquete(xMinhaRaquete, yMinhaRaquete);
colisaoBolinhaMinhaRaquete();
verificarColisaoRaquete(xMinhaRaquete, yMinhaRaquete);
mostrarRaquete(xRaqueteOponente, yRaqueteOponente)
movimentarRaqueteOponente();
verificarColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
mostrarPlacar();
marcarPonto();
}
function mostrarBolinha() {
circle (xBolinha, yBolinha, diametro);
}
function movimentarBolinha(){
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
function colisaoBolinhaBorda(){
if (xBolinha + raio> width ||
xBolinha - raio < 0){
velocidadeXBolinha *= -1;
}
if (yBolinha + raio > height ||
yBolinha - raio < 0){
velocidadeYBolinha *= -1;
}
}
function mostrarRaquete(x,y){
rect(x, y, wRaquete, hRaquete);
}
function movimentarMinhaRaquete(){
if (keyIsDown(UP_ARROW)){
yMinhaRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)){
yMinhaRaquete += 10;
}
}
function colisaoBolinhaMinhaRaquete(){
if (xBolinha - raio < xMinhaRaquete + wRaquete && yBolinha - raio < yMinhaRaquete + hRaquete && yMinhaRaquete - raio > yMinhaRaquete){
velocidadeXBolinha *= -1;
}
}
function colisaoMinhaRaqueteBiblioteca(){
colidiu =
collideRectCircle(xMinhaRaquete, yMinhaRaquete, wRaquete, hRaquete, xBolinha, yBolinha, raio)
if (colidiu){
velocidadeXBolinha *= -1
}
}
function verificarColisaoRaquete(x, y){
colidiu =
collideRectCircle(x, y, wRaquete, hRaquete, xBolinha, yBolinha, raio)
if (colidiu){
velocidadeXBolinha *= -1
}
}
function movimentarRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteOponente - wRaquete / 2 - 30;
yRaqueteOponente += velocidadeYOponente
}
function mostrarPlacar(){
text(meusPontos, 278, 26)
text(pontosOponente, 321, 26)
}
function marcarPonto(){
if (xBolinha > 590){
meusPontos += 1;
}
if (xBolinha < 10){
pontosOponente += 1;
}
}