2
respostas

[Pong no P5js editor, colisão entre objetos com bug]

Enquanto fazia as atividades do curso de lógica de programação. Montei as equações de reconhecimento de colisão assim como o professor ensina mas, acontece que a bolinha do jogo tem um impacto antes de realmente "encostar" na raquete e há momentos em que ela fica presa entre a raquete e a borda da tela

código da verificação de colisão:

function verificaColisaoRaquete(){
  colidiu =
  (xBolinha - diametro < xRaquete + comprimentoRaquete && yBolinha - diametro < yRaquete + alturaRaquete && yBolinha + diametro > yRaquete)
    if (colidiu){
      velocidadeXbolinha *= -1;
    }
2 respostas

Olá, João!

Pelo que eu posso ver, a lógica de detecção de colisão que você está usando pode estar causando a bolinha a reverter sua direção antes de realmente "encostar" na raquete. Isso pode ser devido à maneira como você está calculando a colisão.

No seu código, você está verificando se a borda esquerda da bolinha (xBolinha - diametro) é menor que a borda direita da raquete (xRaquete + comprimentoRaquete). No entanto, acho que você deveria verificar se a borda direita da bolinha (xBolinha + diametro) é maior que a borda esquerda da raquete (xRaquete). Além disso, você também precisa verificar se a bolinha está dentro dos limites verticais da raquete.

Aqui está uma sugestão de como você poderia modificar sua função:

function verificaColisaoRaquete(){
  colidiu =
  (xBolinha + diametro > xRaquete && yBolinha + diametro > yRaquete && yBolinha - diametro < yRaquete + alturaRaquete)
    if (colidiu){
      velocidadeXbolinha *= -1;
    }
}

Quanto à bolinha ficar presa entre a raquete e a borda da tela, isso pode estar acontecendo porque a bolinha está invertendo sua direção repetidamente quando está nessa posição. Uma possível solução seria adicionar uma verificação para garantir que a bolinha só pode inverter sua direção uma vez após colidir com a raquete.

Espero ter ajudado e bons estudos!

......