1
resposta

Colisão Bolinha

Quando inclui o p5.collide2d.js a bolinha parou de tocar a raquete, ela passa a raquete tanto minha como do oponente, tentei refazer a função porem não está funcionando ainda. como faço?

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

function colisaoMinhaRaqueteBiblioteca(){
  colidiu = 
    collideRectRect(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
  if (colidiu){velocidadeXBolinha *= - 1;
  }
}
function colisaoMinhaRaqueteOponenteBiblioteca(){
  colidiu = 
    collideRectRect(xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
  if (colidiu){velocidadeXBolinha *= - 1;
  }
}

Essa é a função que escrevi.

1 resposta

Oi Nayara, tudo bem?

Parece que você está usando a biblioteca p5.collide2D.js para detectar colisões entre elementos do jogo. Se entendi corretamente, você está enfrentando um problema em que a bolinha não está colidindo com as raquetes após incluir a biblioteca.

Uma possível solução seria revisar a lógica das condições de colisão em sua função verificaColisaoRaquete e nas funções colisaoMinhaRaqueteBiblioteca e colisaoMinhaRaqueteOponenteBiblioteca. Certifique-se de que as coordenadas e dimensões dos retângulos estão sendo passadas corretamente para as funções collideRectRect.

Aqui está um exemplo de como você pode atualizar as funções para corrigir o problema:

function verificaColisaoRaquete() {
  if (
    collideRectCircle(
      xRaquete, yRaquete,
      raqueteComprimento, raqueteAltura,
      xBolinha, yBolinha,
      raio * 2 // Diâmetro em vez de raio
    )
  ) {
    velocidadeXBolinha *= -1;
  }
}

function colisaoMinhaRaqueteBiblioteca() {
  if (
    collideRectCircle(
      xRaquete, yRaquete,
      raqueteComprimento, raqueteAltura,
      xBolinha, yBolinha,
      raio * 2 // Diâmetro em vez de raio
    )
  ) {
    velocidadeXBolinha *= -1;
  }
}

function colisaoMinhaRaqueteOponenteBiblioteca() {
  if (
    collideRectCircle(
      xRaqueteOponente, yRaqueteOponente,
      raqueteComprimento, raqueteAltura,
      xBolinha, yBolinha,
      raio * 2 // Diâmetro em vez de raio
    )
  ) {
    velocidadeXBolinha *= -1;
  }
}

Nesse exemplo, substituímos a função collideRectRect pela função collideRectCircle, passando o diâmetro da bolinha em vez do raio. Isso garante que a colisão seja detectada corretamente.

Certifique-se de também verificar se as coordenadas e dimensões das raquetes e da bolinha estão sendo atualizadas corretamente em outras partes do seu código.

Era isso, espero ter ajudado, abraços.