1
resposta

[Sugestão] Solução para esfera presa atrás da raquete

Verifiquei os posts, e não encontrei solução semelhante a que desenvolvi, então resolvi compartilhar.

Reparei que a bolinha fica presa por trás da raquete justamente porque ela colide por trás, então pensei: Quando a bolinha estiver indo para o outro lado, a colisão com a raquete não deve existir, nunca!

Com isso, além das 3 condições básicas para a colisão da esfera com a raquete, implementei uma quarta verificação: o sentido de movimento da esfera.

function verificaColisaoRaquete() {
        if (xEsfera < posRaquete1X + larguraRaquete     // Verifica se a esfera está alinhada com a borda da raquete 1
        && yEsfera > posRaquete1Y - alturaRaquete/2     // Verifica se o Y da esfera está abaixo do topo da raquete  
        && yEsfera + bordaYInferiorEsfera < posRaquete1Y + alturaRaquete/2     // Verifica se o Y da esfera está acima da base da raquete 
        && velocidadeXEsfera < 0) {     // Verifica se a esfera está indo para a esquerda, AQUI ESTÁ O SEGREDO
        velocidadeXEsfera *= -1;     //  Inverte sentido X da esfera
        somRaquetada.play(0, 1, 0.1);     //  Reproduz efeito sonoro
}

Assim, a esfera só vai colidir com a raquete da esquerda quando estiver vindo da direita, como deve ser.

1 resposta

Oiii Matheus, tudo bem com você?

Muito bom! Fico feliz que tenha compartilhado sua sugestão com a comunidade do fórum da Alura, assim, podemos ver suas ideias de implementação e seu desenvolvimento, além de que suas sugestões podem ainda ajudar os outros estudantes da plataforma :)

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!