2
respostas

Colisão com minha Raquete prende a bolinha entre a borda e a minha Raquete

Quando utilizo o código importado da biblioteca e ocorre a colisão da bolinha com a minha raquete ela fica presa entre a borda e a minha raquete, mesmo descendo ou subindo a raquete a bolinha não volta mais ao jogo, fica somente subindo e descendo na distância x (xBolinha=5). Quando utilizo o código verificaColisaoRaquete feito sem a biblioteca funciona certinho, teve um post que o amigo que tentou ajudar disse que era pra não deixar verificaColisaoRaquete comentado, mas daí não faria sentido importar a solução...

//variáveis da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let dDiametro= 15;

//variáveis da velocidade da Bolinha
let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;
let raio = dDiametro / 2;

//variáveis da Raquete
let xRaquete = 5;
let yRaquete = 150;
let wRaquete = 10;
let hRaquete = 90;
let colidiu = false;


//variáveis da Raquete do Oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;

//variáveis Raquete do Oponente
let velocidadeXRaqueteOponente;
let velocidadeYRaqueteOponente;


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

function draw() {
  background(0);
  mostrarBolinha();
  velocidadedaBolinha();
  verificaColisaoBolinha();
  mostrarRaquete(xRaquete, yRaquete);
  mostrarRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentarRaquete();
  movimentaRaqueteOponente();
  //verificaColisaoRaquete();
  verificaColisaoRaqueteBiblioteca();
}

function mostrarBolinha() {
   circle(xBolinha, yBolinha, dDiametro);
}

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

function verificaColisaoBolinha() {
  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 movimentarRaquete() {
  if(keyIsDown(UP_ARROW)) {
    yRaquete -= 10;
  }

  if(keyIsDown(DOWN_ARROW)) {
    yRaquete += 10;
  }
}

function movimentaRaqueteOponente() {
  velocidadeYRaqueteOponente = yBolinha - yRaqueteOponente - wRaquete /2 - 30;
  yRaqueteOponente += velocidadeYRaqueteOponente;
}



function verificaColisaoRaquete() {
  if (xBolinha - raio < xRaquete + wRaquete
     && yBolinha - raio < yRaquete + hRaquete
     && yBolinha + raio > yRaquete) {
    velocidadeXBolinha *= -1;
  }
}

function verificaColisaoRaqueteBiblioteca() {
  colidiu =
  collideRectCircle(xRaquete, yRaquete, wRaquete, hRaquete, xBolinha, yBolinha, raio);
  if (colidiu)
    velocidadeXBolinha += -1;
}

Alguém consegue ajudar?

2 respostas

Resolvido, o problema estava na última linha onde ao invés de multiplicar estava somando!!!

Olá Shirlei, como vai?

Excelente que conseguiu resolver.

Qualquer dúvida estamos por aqui.

Abraços e bons estudos!