3
respostas

Bom dia

olá, não fiz o código pela biblioteca, tentei fazer normalmente sem copiar o código de ninguém, porem a bolinha atravessa a raquete do oponente. poderiam analisar o que está errado na parte da função " verificaColisaoRaqueteOp"?

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

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

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

//variaveis raquete oponente let xRaqueteOp = 585; let yRaqueteOp = 150; let velocidadeYOp;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOp, yRaqueteOp); movimentaMinhaRaquete(); movimentaRaqueteOp(); verificaColisaoRaquete(); verificaColisaoRaqueteOp();

}

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 movimentaRaqueteOp(){ velocidadeYOp = yBolinha - yRaqueteOp - raqueteComprimento / 2 - 30; yRaqueteOp += velocidadeYOp; }

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

function verificaColisaoRaqueteOp(){ if (xBolinha + raio > xRaqueteOp - raqueteComprimento && yBolinha + raio < yRaqueteOp - raqueteAltura && yBolinha - raio > yRaqueteOp){ velocidadeXBolinha *= -1; } }

3 respostas

Olá Jair, boa noite! Analisando seu código o mesmo funcionou alterando alguns operadores, veja como ficou: function verificaColisaoRaqueteOp(){ if (xBolinha + raio > xRaqueteOp + raqueteComprimento && yBolinha + raio > yRaqueteOp - raqueteAltura && yBolinha - raio > yRaqueteOp){ velocidadeXBolinha *= -1; } }

Tente colocar a raquete do oponente em movimento e veja se o efeito será o mesmo.

Só explicando um pouco, a alteração foi no sinal de "-" para "+", onde você estava subtraindo < xRaqueteOp - raqueteComprimento>, sendo necessário a soma para a bolinha reconhecer toda a raquete. No segundo momento foi, você estava comparando "yBolinha + raio < yRaqueteOp - raqueteAltura" sendo necessário colocar o operador maior ">", dessa forma a bolinha vai reconhecer a parte inferior da raquete atingindo a parede e contando ponto. Espero que funcione.

Olá carolina. só vou conseguir testar amanhã, pois trabalho esta noite. Amanhã tentarei fazer. Desde já agradeço sua ajuda. Ótima noite.