1
resposta

minha bolinha não esta se movimentando do jeito certo

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

let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

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

let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

let colidiu = false;


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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostrarRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  mostrarRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  verificaColisaoRaqueteOponente();
}

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

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

function verificaColisaoBorda(){
  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, raqueteComprimento, raqueteAltura);
}

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

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
  yRaqueteOponente += velocidadeYOponente;
}

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

function verificaColisaoRaqueteOponente() {
    if (xBolinha - raio < xRaqueteOponente + raqueteComprimento
        && yBolinha - raio < yRaqueteOponente + raqueteAltura
        && yBolinha + raio > yRaqueteOponente) {
        velocidadeXBolinha *= -1;
    }
}

minha bolinha esta se movendo de um jeito estranho e não consigo saber o porque, alguem poderia me ajudar

1 resposta

Olá, Allan! Tudo bem com você?

Verifiquei o seu código e pude observar que é a função verificaColisaoRaqueteOponente() que está dando conflito na movimentação da bolinha. Isso ocorreu porque essa lógica utilizada funciona para a função verificaColisaoRaquete(). Como as duas raquetes estão em pontos diferentes, a lógica muda um pouquinho. Acompanhe as aulas da sequência , pois o professor irá explicar como verificar a colisão da raquete do oponente.

Você pode deixar a função em comentário no Draw() para visualizar melhor ou mesmo excluir a verificaColisaoRaqueteOponente().

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostrarRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  mostrarRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  //verificaColisaoRaqueteOponente();
}

Não se preocupe pois nas próximas aulas o instrutor demonstra como verificar a colisão da raquete oponente também.

Espero ter ajudado

Um abraço e bons estudos!!!