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

Não colide com a raquete

Boa tarde! Eu não sei o motivo, mas a minha bola ainda atravessa a raquete e eu não sei onde tá o erro no meu código. Podem olhar e ver por que a função colidirRaquete() não tá funcionando?

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;

let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;

let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

let velocidadeYRaquete = 6;

function setup() {
  createCanvas(600, 400);
}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colidirBorda(); 
  mostraRaquete();
  movimentaMinhaRaquete();
  colidirRaquete();
}

function mostraBolinha() {
  circle(xBolinha, yBolinha, diametro);
}

function movimentaBolinha() {
  xBolinha += velocidadeXBolinha;
  //yBolinha += velocidadeYBolinha;  
}

function colidirBorda() {
  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 colidirRaquete() {
  if (xBolinha - raio < xRaquete + raqueteComprimento
      && yBolinha - raio < yRaquete + raqueteAltura
      && yBolinha + raio > yRaquete + raqueteAltura) {
    velocidadeXBolinha *= -1
  }
}
1 resposta
solução!

Depois de muita análise, percebi que a terceira condição está errada, e o certo seria yBolinha + raio > yRaquete e não yRaquete + raqueteAltura.