1
resposta

Bolinha não colide na raquete do oponente :(

Pessoal, já testei varias vezes o código, li algumas respostas no fórum mas ainda não consegui resolver meu problema. A bolinha colide na minha raquete mas na do oponente não, o que consequentemente faz com que eu tenha pontos sempre. Alguém que possa dar um help?

//variáveis da bolinha
let xBol = 300;
let yBol = 200;
let dBol = 13;
let raio = dBol / 2 ;

let velXBol = 5;
let velYBol = 5;


//variáveis da raquete
let xRaq = 5;
let yRaq = 150;
let raqH = 10;
let raqW = 90;


// variáveis da raquete - oponente

let xRaqop = 585;
let yRaqop = 150;
let velYRaqop;

let colidiu = false;

//placar do jogo

let meusPontos = 0;
let pontosOp = 0;


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

/// O que aparece na tela ///

function draw() {
  background(color(255,192,203));
  mostraBol();
  movBol();
  colisaoBol();
  mostraRaq(xRaq,yRaq);
  mostraRaq(xRaqop, yRaqop);
  movRaq();
  movRaqop();
  verificaColisaoRaq(xRaq, yRaq);
  verificaColisaoRaq(xRaqop, yRaqop);
  incluiPlacar();
  marcaPonto();

}

function mostraBol(){
  fill(color(139,0,139))
  circle(xBol, yBol, dBol);
}

function movBol(){
  xBol += velXBol;
  yBol += velYBol;
}

function colisaoBol(){
  if (xBol + raio> width ||
     xBol - raio< 0){
    velXBol *= -1;
  }
  if (yBol + raio> height ||
     yBol - raio < 0){
    velYBol *= -1;
  }
}

function mostraRaq(x,y){
  rect(x, y, raqH, 
      raqW);
}

function movRaq(){
  if (keyIsDown(UP_ARROW)){
    yRaq -= 10;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaq += 10;
  }
}

function verificaColisaoRaq(x,y){
  if (xBol - raio < xRaq + raqH && 
      yBol - raio < yRaq + raqW && 
      yBol + raio > yRaq){
    velXBol *= -1;
  }

}

function movRaqop(){
  velYRaqop = yBol - yRaqop - raqH /2 -30
  yRaqop += velYRaqop
}

function verificaColisaoRaq(x, y) {
    colidiu = collideRectCircle(x, y, raqW, raqH, xBol, yBol, raio);
    if (colidiu){
        velXBol *= -1;}
}

function incluiPlacar(){
  stroke(255);
  textAlign(CENTER);
  textSize (16);
  fill(color(238,130,238));
  rect(150, 10, 40, 20);
  fill(255);
  text(meusPontos, 170, 26);
  fill(color(238,130,238));
  rect(450, 10, 40, 20);
  fill(255);
  text(pontosOp, 470, 26);
}

function marcaPonto(){
  if (xBol > 590){
    meusPontos += 1;
  }
  if (xBol < 10){
    pontosOp += 1;
  }
}
1 resposta
function verificaColisaoRaq(x, y) {

    colidiu = collideRectCircle(x, y, raqW, raqH, xBol, yBol, raio);
    if (colidiu){
        velXBol *= -1;}
}

Não sei se pode ser isso, mas tenta deixar o collideRectCircle em outra linha, assim=

function verificaColisaoRaq(x, y) {
colidiu = 
        collideRectCircle(x, y, raqW, raqH, xBol, yBol, raio);
    if (colidiu){
        velXBol *= -1;}
}