2
respostas

Bolinha parou de colidir com minha raquete após fazer a raquete do oponente movimentar.

Bom dia, após incluir movimento na raquete do oponente a bolinha parou de colidir com minha raquete. Segue o código:

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

//Variáveis da velocidade da Bolinha
let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//Variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

// variáveis da raquete do oponente

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

let colidiu = false;

// função da dimensão da tela do jogo
function setup() {
  createCanvas(600, 400);
}

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


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 colisaoMinhaRaqueteBiblioteca(){
  colidiu = 
  collideRectCircle(xRaquete, yRaquete, raqueteComprimento,raqueteAltura,xBolinha,yBolinha,raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}
2 respostas

Descobrir. rsrs Não tinha comentado a função "verificaColisaoRaquete()" no draw igual está o código do professor até a aula "Colisão com Oponente".

Oi Gabriel, tudo certo?

Fico feliz que tenha encontrado o erro! Quando há duas funções com o mesmo objetivo, a execução do código acaba resultando em comportamentos inesperados, mesmo, pois a lógica não está coerente com o que buscamos. Descobrir bugs é parte do cotidiano de uma pessoa programadora, parabéns pela investigação!

Conte com o fórum sempre que precisar.

Um abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!