1
resposta

Boa tarde. Não estou conseguindo fazer a bolinha colidir com a raquete do oponente, eu não consegui achar a biblioteca para baixar então decidi utilizar a maneira que foi apresentada no vídeo.

//Variáveis Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

//Váriaveis Raquete
let xRaquete = 5;
let yRaquete = 150;
let alturaRaquete = 90;
let comprimentoRaquete = 10;

//Váriaveis Raquete2
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let alturaRaquete2 = 10;
let comprimentoRaquete2 = 90;

//Váriaveis velocidade bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colisaoBolinha();
  raquete(xRaquete, yRaquete);
  raquete(xRaqueteOponente, yRaqueteOponente);
  movimentaMinhaRaquete();
  movimentaRaqueteOponente();
  colisaoBolinhaRaquete();
  colisaoBolinhaRaqueteOponente();``

}

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

function movimentaBolinha(){
  circle(xBolinha, yBolinha, diametro);
  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 raquete(x, y){
  rect(x, y, comprimentoRaquete, alturaRaquete);
}

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

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

function colisaoBolinhaRaquete(){
  if (xBolinha - raio < xRaquete && xRaquete + comprimentoRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete) {
        velocidadeXBolinha *= -1;
  }
}

function colisaoBolinhaRaqueteOponente(){
  if (xBolinha - raio < xRaqueteOponente && xRaqueteOponente + comprimentoRaquete2 && yBolinha - raio < yRaqueteOponente + alturaRaquete2 && yBolinha + raio > yRaqueteOponente) {
        velocidadeXBolinha *= -1;
  }
}
1 resposta

Olá, João! Tudo bem com você?

Vou deixar aqui um link que irá realizar o download automático da biblioteca para o seu computador, tudo bem?

  • Sobre a solução sem a Biblioteca

É perfeitamente possível você movimentar a raquete do oponente sem a biblioteca, basta modificar um pouco os valores utilizados na lógica para fazer correspondência com o outro lado da tela. No entanto, você aplicou os mesmos valores e por isso não funcionou adequadamente.

Vou deixar uma solução incrível desenvolvida pela aluna Alura Jéssica Cordeiro :

Espero que tenha ajudado, fico à disposição!

Um abraço e bons estudos!