Tendo a tentar executar os passos antes do professor, e pela lógica, usei "if (colidiu = true)". Isso causou um bug onde a bolinha deixava de colidir com a parede direita do canvas.
Ps: meu código tem algumas diferenças, uso a função "abs()" para escolher o sentido da velocidade ao invés de simplesmente inverter, de resto acho que está relativamente igual.
//canvas
let xCanvas = 600
let yCanvas = 400
//bolinha
let xBolinha = 300; //posição x
let yBolinha = 200; //posição y
let dBolinha = 10; //diâmetro
let rBolinha = dBolinha/2; //raio
//velocidade da bolinha
let vXBolinha = 6; //velocidade x
let vYBolinha = 6; //velocidade y
//raquete
let xRaquete = 20; //posição x
let yRaquete = 190; //posição y
let wRaquete = 10; //largura
let hRaquete = 50; //altura
let vRaquete = 6; //velocidade
let colisao = false;
function setup() {
createCanvas(xCanvas, yCanvas);
}
function draw() {
background(0);
stroke(255)
line (xCanvas/2, 0, xCanvas/2, yCanvas);
mostraBolinha();
movBolinha();
colBolinhaBorda();
mostraRaquete();
controleRaquete();
//colBolinhaRaquete();
colRectCircle();
}
function mostraBolinha(){
circle (xBolinha, yBolinha, dBolinha);
}
function movBolinha(){
xBolinha += vXBolinha;
yBolinha += vYBolinha;
}
function colBolinhaBorda(){
if (xBolinha > width-rBolinha) {
vXBolinha = abs(vXBolinha) *-1
}
if (xBolinha < rBolinha) {
vXBolinha = abs(vXBolinha)
}
if (yBolinha > height-rBolinha) {
vYBolinha = abs(vXBolinha) * -1
}
if (yBolinha < rBolinha) {
vYBolinha = abs(vXBolinha)
}
}
function mostraRaquete(){
rect(xRaquete, yRaquete, wRaquete, hRaquete)
}
function controleRaquete(){
if (keyIsDown(UP_ARROW) || keyIsDown(87) ) { // W
if (yRaquete < 0) {}
else {
yRaquete -= vRaquete;
}
}
if (keyIsDown(DOWN_ARROW) || keyIsDown(83) ) { // S
if (yRaquete > yCanvas-hRaquete) {}
else {
yRaquete += vRaquete;
}
}
}
function colBolinhaRaquete(){
if (xBolinha <= xRaquete+wRaquete+rBolinha && yBolinha >= yRaquete+rBolinha && yBolinha <= yRaquete+rBolinha+hRaquete) {
vXBolinha = abs(vXBolinha)
}
}
function colRectCircle(){
colisao = collideRectCircle(xRaquete, yRaquete, wRaquete, hRaquete, xBolinha, yBolinha, rBolinha);
if (colisao){
vXBolinha = abs(vXBolinha)
}
}