3
respostas

Colisão bolinha com a raquete do oponente

pessoal estou com a seguinte dúvida, Criei a função:

function movimentaRaqueteOponente(){

        velocidade = bolinhaEixo_Y - eixoYraqueteOponente - larguraRaquete / 2 - 30;
        eixoYraqueteOponente += velocidade;
    }

e criei a função verificaColisão Raquete:

function verificaColisaoRaquete(){

        if (bolinhaEixo_X < eixoXminhaRaquete + larguraRaquete && bolinhaEixo_Y < eixoYminhaRaquete + alturaRaquete && bolinhaEixo_Y > eixoYminhaRaquete) {
            velocidadeXbolinha *= -1;
        }
    }

A bolinha na minha Raquete reconhece e bate e volta, e na Raquete do oponente não funciona, alguém pode me ajudar?

3 respostas

Fala, Marcio! Tudo bem contigo?

Vou pedir para postar o link editor do seu p5jspara que possamos dar uma olhada no código por inteiro, tudo bem? ;-)

Porém, se achar melhor postar seu código completo, fique a vontade!

Ficamos no aguardo!!!

Cássio, boa tarde! Obrigado pelo retorno, eu consegui resolver a questão da colisão. Eu criei um código fora do p5js porém não estou conseguindo fazer o player 1 pontuar contra a CPU. segue abaixo o código relacionado a Movimentação da Raquete Oponente.

var yBola = 190;
var xBola = 290;
var yRaquetePlayer2 = 140;
var widthRaquete = 15;
var velocidadeRaquetePlayer2;
var velocidadeXbola = 3;
var pontosPlayer1 = 0;
var pontosPlayer2 = 0;

function movimentaRaquetePlayer2(){
            velocidadeRaquetePlayer2 = yBola - yRaquetePlayer2 - widthRaquete / 2 - 30;
            yRaquetePlayer2 += velocidadeRaquetePlayer2;
        }
function verificaColisaoRaqueteOponente(){
            var dx = xRaquetePlayer2 - xBola;
            var dy = yRaquetePlayer2 - yBola;
            var distancia = Math.sqrt((dx*dx)+(dy+dy));
            if(distancia < raioBola){
                colidiu = true;
                velocidadeXbola *= -1;  
            }
        }

Fala, Marcio! Tudo bom?

A não pontuação podem ser dois fatores e teríamos que testar!

Caso o problema do player1não conseguir pontuar contra o oponente seja a área em que a bolinha deve ultrapassar para ser considerado o ponto, dê uma olhada nessa dúvida no fórum. Pode ser que te dê uma ideia sobre isso.

Agora, se a dificuldade está sendo pelo oponente nunca errar, vale dar uma olhada nessa outra dúvida que foi criado uma função para gerar a margem de erro, caso o oponente esteja ganhando ;-)

Faça esses testes, Marcio, e nos retorne para sabermos se deu certo!

Um abraço e até breve!