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

[Bug] Bolinha fica tremendo no meio da tela enquanto acompanha o oponente no eixo Y

Fiz todo o meu código acompanhando o instrutor porém diferente dele eu não peguei a biblioteca do GitHub. Minha bolinha está tendo um compormamento estranho, como descrito no título, porém não consigo identificar o erro e o console também não acusa nada, alguém pode me ajudar? Segue o link do meu projeto e o código.

Link: https://editor.p5js.org/luixx0/sketches/YLsWUEyJN

//váriaveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

//velocidade da bolinha
let velocidadeX = 5;
let velocidadeY = 5;

//váriaveis raquete
let xRaquete = 5;
let yRaquete = 160;
let larguraRaquete = 5;
let alturaRaquete = 95;  

//variáveis bot
let xBot = 590;
let yBot = 160;
let larguraBot = 5;
let alturaBot = 95;  

//velocidade do bot
let velocidadeYBot;


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

function draw() {
  background(0);

  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBordas();
  desenhaRaquete();
  movimentaRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete,larguraRaquete,alturaRaquete);
  movimentaBot();
  verificaColisaoRaquete(xBot,yBot,larguraBot, alturaBot);

}

function mostraBolinha() {

  circle(xBolinha,yBolinha,diametro);
}

function movimentaBolinha() {

  xBolinha += velocidadeX;
  yBolinha += velocidadeY;
}

function verificaColisaoBordas() {

  if(xBolinha + raio > width || xBolinha - raio < 0) {

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

    velocidadeY *= -1
  }
}

function desenhaRaquete() {

  rect(xRaquete,yRaquete,larguraRaquete,alturaRaquete);
  rect(xBot,yBot,larguraBot,alturaBot);
}

function movimentaRaquete() {

  if(keyIsDown(UP_ARROW)) {

    yRaquete -= 10;
  } else if(keyIsDown(DOWN_ARROW)) {

    yRaquete += 10;
  }
}

function verificaColisaoRaquete(x,y,l,a) {

  if (xBolinha - raio < x + l
  && yBolinha - raio < y + a
  && yBolinha + raio > y){
    velocidadeX *= -1;
  }
}

function movimentaBot() {

  velocidadeYBot = yBolinha - yBot - larguraRaquete / 2 - 30;
    yBot += velocidadeYBot
}
1 resposta
solução!

Olá Luiz! Encontrei o problema! A function verificaColisãoRaquete não está usando as variáveis que você atribuiu para a raquete, só as da bolinha! Isso está fazendo com que a direção da bolinha mude sem parar. Aqui está o código com os valores de "x, y, l, a" substituídos pelas variáveis que você fez:

function verificaColisaoRaquete() {

  if (xBolinha - raio < xRaquete + larguraRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete){
    velocidadeX *= -1;
  }
}

Espero ter ajudado!