1
resposta

Erro na função para verificar a colisão da raquete

function VerificaColisaoRaquete(){
    if (xBolinha - Raio < Xraquete + ComprimentoRaquete && yBolinha - Raio < Yraquete + LarguraRaquete && yBolinha + Raio > Yraquete) 
    {
        VelocidadeBolinhax *= -1;
  }
}

A função está igual a da aula, mudando apenas o nome das variáveis, e mesmo assim não reconhece a colisão. Se desabilitar a função, o jogo reconhece todas as bordas e não da nenhum Bug. Mas assim que habilita ela novamente, a bolinha fica "quicando" na lateral da raquete, atravessa a borda e outros erros. Alguem poderia verificar por favor!!

1 resposta

Olá Erica, tudo bem?

Olhando para a função que você compartilhou, parece haver um problema com as condições da colisão. A verificação atual parece estar incorreta, o que pode causar comportamentos estranhos no jogo.

Vamos analisar a condição que você está usando:

if (xBolinha - Raio < Xraquete + ComprimentoRaquete && yBolinha - Raio < Yraquete + LarguraRaquete && yBolinha + Raio > Yraquete)

Com base na lógica da condição, parece que você está verificando se a bola está à esquerda da raquete (na horizontal) e se está dentro dos limites verticais da raquete. No entanto, essa lógica não é suficiente para detectar a colisão corretamente.

A condição correta para verificar a colisão entre a bola e a raquete no jogo Pong deve levar em consideração tanto a posição horizontal quanto a posição vertical da bola e da raquete. Aqui está um exemplo de uma condição corrigida:

if (xBolinha - Raio < Xraquete + ComprimentoRaquete &&
    xBolinha + Raio > Xraquete &&
    yBolinha - Raio < Yraquete + LarguraRaquete &&
    yBolinha + Raio > Yraquete)
{
    VelocidadeBolinhax *= -1;
}

Nesta nova condição, estamos verificando se:

  1. A posição horizontal da bola (xBolinha - Raio) está à esquerda da borda direita da raquete (Xraquete + ComprimentoRaquete).
  2. A posição horizontal da bola (xBolinha + Raio) está à direita da borda esquerda da raquete (Xraquete).
  3. A posição vertical da bola (yBolinha - Raio) está acima da borda inferior da raquete (Yraquete + LarguraRaquete).
  4. A posição vertical da bola (yBolinha + Raio) está abaixo da borda superior da raquete (Yraquete).

Certifique-se de que as variáveis usadas nessa condição (como xBolinha, Raio, Xraquete, ComprimentoRaquete, yBolinha, Yraquete e LarguraRaquete) estejam definidas corretamente em seu código.

Espero que isso ajude a resolver o problema da colisão no seu jogo Pong.

Se você tiver outras dúvidas, por favor, avise-me!