4
respostas

Colisão raquete maquina sem biblioteca

Mesmo invertendo a condição para a raquete da maquina que já está no lado positivo, a bolinha continua a atravessar a raquete da máquina. Alguém poderia me auxiliar no que eu estou falhando?

//Parametros da Bolinha let xBolinha = 300; let yBolinha = 200; let iDiamentro = 50; let iRaioBolinha = iDiamentro / 2;

//Velocidade da Bolinha let iVelocidadeBolinha_x = 2; let iVelocidadeBolinha_y = 2;

//Parametros Raquete Jogador let xRaqueteJogador = 5; let yRaqueteJogador = 130; let iRaqueteComprimento = 10; let iRaqueteAltura = 90;

//Parametros Raquete Maquina let xRaqueteMaquina = 585; let yRaqueteMaquina = 150; let yVelocidadeRaqueteOponente;

function setup() { createCanvas(600, 400); }

//projeto function draw() { background(0); criaBolinha(); movimentaBolinha(); contatoBolinhaBorda(); criaRaquete(xRaqueteJogador,yRaqueteJogador); criaRaquete(xRaqueteMaquina,yRaqueteMaquina); movimentoRaqueteJogador(); movimentoRaqueteMaquina(); colisaoBolinhaRaqueteJogador(); colisaoBolinhaRaqueteMaquina(); }

//Desenha a bolinha na tela function criaBolinha(){ circle(xBolinha,yBolinha,iDiamentro); }

//Velocidade em que a bolinha se move no eixo x e y function movimentaBolinha(){ xBolinha += iVelocidadeBolinha_x; yBolinha += iVelocidadeBolinha_y; }

//Ajusta para que as bordas da bolinha toque na borda da tela ao invés do centro da bolinha function contatoBolinhaBorda(){ if((xBolinha + iRaioBolinha) > width || (xBolinha - iRaioBolinha) < 0) { iVelocidadeBolinha_x *= -1; } if((yBolinha + iRaioBolinha)> height || (yBolinha - iRaioBolinha) < 0) { iVelocidadeBolinha_y *= -1; } }

//Desenha raquete function criaRaquete(x,y){ rect(x,y,iRaqueteComprimento,iRaqueteAltura); }

//Atribui movimento para a raquete do jogador function movimentoRaqueteJogador(){ if(keyIsDown(UP_ARROW)){ yRaqueteJogador -= 10; } if(keyIsDown(DOWN_ARROW)){ yRaqueteJogador += 10; } }

//Atribui movimento para a raquete do Maquina function movimentoRaqueteMaquina(){ yVelocidadeRaqueteOponente = yBolinha - yRaqueteMaquina; yVelocidadeRaqueteOponente = yVelocidadeRaqueteOponente - iRaqueteComprimento; yVelocidadeRaqueteOponente = yVelocidadeRaqueteOponente / 2 - 30; yRaqueteMaquina += yVelocidadeRaqueteOponente; }

//Verifica a colisão da bolinha na raquete Jogador function colisaoBolinhaRaqueteJogador(){ if( (xBolinha - iRaioBolinha < xRaqueteJogador + iRaqueteComprimento) && ((yBolinha - iRaioBolinha) < (yRaqueteJogador + iRaqueteAltura)) && ((yBolinha + iRaioBolinha) > yRaqueteJogador) ){ iVelocidadeBolinha_x *= -1; } }

//Verifica a colisão da bolinha na raquete da Maquina function colisaoBolinhaRaqueteMaquina(){ if( xBolinha + iRaioBolinha > xRaqueteMaquina && yBolinha + iRaioBolinha < yRaqueteMaquina + iRaqueteAltura && yBolinha + iRaioBolinha > yRaqueteMaquina) { iVelocidadeBolinha_x *= -1; } }

4 respostas

Coloca o link do seu p5 fazendo um favor, fica mais fácil para testar.

Olá, pessoal! Estou com o mesmo problema. Na verdade, antes a bola colidia com a minha raquete, agora não colide com nenhuma das raquetes. A minha função "verificaColisaoRaquete" está incompleta e não sei como proceder. Não sei se é o caso de incluir a biblioteca. Segue o link do meu P5:

https://editor.p5js.org/TalitaHanna/sketches/tj4joXUtx

Oi Talita, vi que na sua função "verificaColisaoRaquete" está assim : velocidadeXBolinha *= -1; { velocidadexBola *= 1; } }

No meu código eu não botei essa "velocidadexBola *= 1; E a bolinha esta se movimentando normalmente, meu problema é que não colide com a do oponente.

Tente tirar essa "velocidadexBola = 1; e faz um teste espero ter ajudado

Olá, Lucas! Obrigada pela sua observação =D Retirei a valocidadeXBola e o jogo se manteve parado. Percebi outra coisa: fiz um teste no P5 com o código do instrutor disponibilizado como gabarito. O jogo não funcionou... O erro apareceu na linha 98 da função verificaColisaoRaquete, especificamente o collideRectCircle. Tentei colocar no draw e também não reconhece. Sem essa função meu código funciona, mas a bola ultrapassa as margens das raquetes.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software