Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

bolinha ultrapassa a raquete com o código da biblioteca

AULA 03 > Criando minha raquete no jogo > 04 Importando outra biblioteca

Boa noite, fiz exatamente como o prof fez na aula, mas a bolinha ultrapassa a raquete com o código da biblioteca. No vídeo da aula dá pra notar o erro e o prof não percebeu. Na aula seguinte fiquei perdido, por que o erro já não estava mais lá e ele não explicou como fez pra corrigir.

//variáveis bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 40;
let raio = diametro / 2;

//variáveis mov bolinha
let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;

//variáveis raquete
let xRaquete = 2;
let yRaquete = 150;
let wRaquete = 10;
let hRaquete = 90;

let colidiu = false;

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

function draw() {
  background(0);
  desenhaBolinha();
  movimentaBolinha();
  colisaoBolinha();
  desenhaRaquete();
  movimentaRaquete();
  //colisaoRaqueteBolinha();
  colisaoRaqueteBolinhaBiblioteca();
}

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

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

function colisaoBolinha() {
  if (xBolinha + raio > width || xBolinha - raio < 0) {
  velocidadeXBolinha *= -1;
  }

  if (yBolinha + raio > height || yBolinha - raio < 0) {
  velocidadeYBolinha *= -1;
  }
}

function desenhaRaquete() {
  rect(xRaquete, yRaquete, wRaquete, hRaquete);
}

function movimentaRaquete() {
  if (keyIsDown(UP_ARROW)) {
    yRaquete += -10;
  }
  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 10;
  }
}

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

function colisaoRaqueteBolinhaBiblioteca() {
  collideRectCircle(xRaquete,yRaquete,wRaquete,hRaquete,xBolinha,yBolinha,diametro);
  if (colidiu) {
  velocidadeXBolinha *= -1;
  }
}
4 respostas

Fala Israel, como vai?

Vamos a solução:

  • Observe que você não atribuiu a verificação do collide em nenhum lugar. Observe o código abaixo, especificamente na variável colidiu:
function verificaColisaoRaquete(x, y){
  colidiu = collideRectCircle(x, y,raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}

Pode por gentileza alterar seu código, realizar um novo teste e compartilhar o link do seu projeto com a gente?

Abraço e bons estudos!

: )

solução!

Oi Guilherme Eu fiz confusão acredito eu, refiz tudo do zero, e agora foi. Eu acho que o problema é depois, na colisão com a raquete do oponente após utilizar o código da biblioteca, mas vou assistir novamente as aulas seguintes com mais calma. Obrigado.

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200; 
let diametro = 15;
let raio = diametro / 2;

//variáveis da velocidade da bolinha
let velXBolinha = 6;
let velYBolinha = 6;

//variáveis da minha raquete
let xRaquete = 5;
let yRaquete = 150;
let wRaquete = 10;
let hRaquete = 90;

let colidiu = false;

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

function draw() {
  background(0);
  desenhaBolinha();
  movimentaBolinha();
  colisaoBolinha();
  desenhaMinhaRaquete();
  movimentaMinhaRaquete();
  //colisaoRaqueteBolinha();
  colisaoMinhaRaqueteBiblioteca();
}

//Bolinha

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

function movimentaBolinha() {
  xBolinha += velXBolinha;
  yBolinha += velYBolinha;
}

function colisaoBolinha() {
  if (xBolinha + raio > width || xBolinha - raio < 0) {
  velXBolinha *= -1;
  }
  if (yBolinha + raio > height || yBolinha - raio < 0) {
  velYBolinha *= -1;
  }
}

//Minha raquete

function desenhaMinhaRaquete() {
  rect(xRaquete, yRaquete, wRaquete, hRaquete);
}

function movimentaMinhaRaquete() {
  if (keyIsDown(UP_ARROW)) {
  yRaquete -= 10;
  }
  if (keyIsDown(DOWN_ARROW)) {
  yRaquete += 10;
  }
}

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

function colisaoMinhaRaqueteBiblioteca () {
  colidiu = collideRectCircle(xRaquete, yRaquete, wRaquete, hRaquete, xBolinha, yBolinha, raio);
  if (colidiu) {
    velXBolinha *= -1;
  }
}

Atualizando, tudo certo agora!

Puxa que Israel.

Feliz que deu certo e qualquer duvida, conte sempre com a Alura!