1
resposta

Não consigo fazer com que as raquetes tenham colisão enquanto uso a mesma função para as duas

Depois que coloquei os parâmetros para a colisão da raquete do oponente, a minha raquete perdeu a colisão com a bolinha e não consigo fazer as nenhuma das duas funcionarem, mesmo seguindo as instruções da aula. Segue toda a linha de código que estou utilizando:

//dimensões da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;

//velocidade da bolinha
let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;

//dimensões da raquete
let xRaquete = 5
let yRaquete = 150
let compRaquete = 10
let altRaquete = 90

let colidiu = false

//dimensões da raquete do oponente
let xRaqueteOponente = 585
let yRaqueteOponente = 150
let velocidadeYOponente;

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

function draw() {
  background(0);
  formaDaBolinha();
  movimentoDaBolinha();
  colisaoDaBolinha();
  formaDaRaquete(xRaquete,yRaquete);
  movimentoMinhaRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  formaDaRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentoRaqueteOponente();
  verificaColisaoRaquete(xRaquete, yRaqueteOponente);

}

function formaDaBolinha(){
  circle(xBolinha, yBolinha ,diametro) 
}

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

function colisaoDaBolinha(){
  if (xBolinha + raio > width || 
      xBolinha - raio < 0){
    velocidadeXBolinha *= -1
  } 
  if (yBolinha + raio> height ||
    yBolinha -raio < 0){
    velocidadeYBolinha *= -1
  }
}

function formaDaRaquete(x,y){
  rect(x, y, compRaquete, altRaquete)
}

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

function verificaColisaoRaquete(x,y){
colidiu = 
collideRectCircle(x, y, compRaquete, altRaquete, xBolinha, yBolinha, raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
  }
}

function movimentoRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - compRaquete/2 -30
  yRaqueteOponente += velocidadeYOponente
}
1 resposta

oi Vinicius! veja na function draw() :

  verificaColisaoRaquete(xRaquete, yRaquete);
  verificaColisaoRaquete(**xRaquete!!!!!!!!!**, yRaqueteOponente);

Na função verificaColisaoRaquete(), vc usou o mesmo parâmetro xRaquete para as duas funções. No caso, a função do Oponente deve ser xRaqueteOponente.

Bons estudos!!