3
respostas

[Dúvida] Erro depois de add X, Y

Boa noite.

https://editor.p5js.org/Rosano/sketches/1jbTuHBvB

logo após fazer a operação de criar a raquete do oponente por meio de X, Y as raquetes deram erro, crescem invés de andar.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

//variaveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 20 let raio = diametro / 2;

//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6; let raqueteComprimento = 10; let raqueteAltura = 90;

//variaveis da raquete let xRaquete = 5; let yRaquete = 150;

//variáveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150;

let colidiu = false

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

function draw() { background(0); mostraBolinha(); //movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); //verificaColisaoRaquete(); colisaoMinhaRaqueteBiblioteca(); mostraRaquete(xRaqueteOponente, yRaqueteOponente); }

function mostraBolinha(){ circle(xBolinha, yBolinha, diametro); }

function movimentaBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

function verificaColisaoBorda(){ if (xBolinha + raio> width || xBolinha - raio < 0){ velocidadeXBolinha *= -1; } if(yBolinha + raio> height || yBolinha - raio < 0){ velocidadeYBolinha *= -1; } }

function mostraRaquete(x, y){ rect(x, y, xRaquete, yRaquete, raqueteComprimento, raqueteAltura); }

function movimentaMinhaRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10; } if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }

function verificaColisaoRaquete(){ if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){ velocidadeXBolinha *= -1; } }

function colisaoMinhaRaqueteBiblioteca(){ colidiu = collideRectCircle(xRaquete, yRaquete, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu){ velocidadeXBolinha *= -1; } }

3 respostas
https://editor.p5js.org/Rosano/sketches/1jbTuHBvB

Oi Rosano, tudo bem?

Ao analisar o seu projeto, as raquetes estão se comportando como o esperado. Parece que você conseguiu resolver o problema.

Agora, para fazer a bolinha funcionar corretamente também, basta remover a parte do código que está comentada:

function movimentaBolinha(){
  //xBolinha += velocidadeXBolinha; // retirar o "//" do inicio da linha 
  yBolinha += velocidadeYBolinha;
}
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Espero conseguir ajudar, qualquer dúvida fico à disposição.

O meu problema é que a raquete do oponenente não se movimenta.

//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 20; let raio = diametro / 2;

//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6;

//variaveis da requete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90;

//variáveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente;

let colidiu = false;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); //verificaColisaoRaquete(); colisaoMinhaRaqueteBiblioteca(); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente; }

function mostraBolinha(){ circle(xBolinha,yBolinha,diametro); }

function movimentaBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

function verificaColisaoBorda(){ if (xBolinha + raio > width || xBolinha - raio < 0){ velocidadeXBolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio <0){ velocidadeYBolinha *= -1; } }

function mostraRaquete(x,y){ rect(x, y, raqueteComprimento, raqueteAltura); }

function movimentaMinhaRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10; } if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }

function verificaColisaoRaquete(){ if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; } }

function colisaoMinhaRaqueteBiblioteca(){ colidiu = collideRectCircle(xRaquete,yRaquete,raqueteComprimento,raqueteAltura, xBolinha, yBolinha, raio) if (colidiu){ velocidadeXBolinha *= -1; } } function movimentaRaqueteOponente(){ velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2 -30; yRaqueteOponenente += velocidadeYOponente }