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

[Dúvida] Colisão raquete oponente

Estou tentando continuar o jogo sem usar o código que o Prof pegou no Git, mas nao consigo fazer a colisão da bolinha com a raquete do oponente, isso é possivel?

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

//velocidade da bolinha
let velocidadeXBolinha = 1;
let velocidadeYBolinha = 6;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//variaveis da raquete
let xRaquete = 5;
let yRaquete = 150;

// variaveis raquete oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente


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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();  
  mostraRaquete(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 mostraRaquete(x,y){
    rect(x, y, raqueteComprimento, raqueteAltura);
}



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

  }
}

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

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

4 respostas

É possivel sim! A única coisa que atrapalha no código é adicionar o comprimento da raquete no xRaqueteOponente, como a raquete já está do lado direito da tela, adicionar o comprimento faz com que a bolinha só cheque a colisão depois que passar da raquete. Se você deletar o trecho " + raqueteComprimento" o código deve funcionar normalmente!

Não funcionou, devo estar fazendo algo errado...

solução!

Encontrei o erro! Haviam alguns sinais invertidos no código. Aqui está o código para você comparar:

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

Deu certo amigo Me ajudou demaiss, muito obrigado man!!!!!