1
resposta

BOLINHA ENTRANDO ATÉ A METADE NA RAQUETE

Olá pessoal!

Após exportar o código de outra biblioteca, no contato com a raquete, a bolinha entra até a metade, depois volta.

Calculei o diâmetro e revisei o código mas continua assim.

Alguma sugestão?

https://editor.p5js.org/wsclaudino/sketches/2RdKixF-s

1 resposta

Olá Walter, tudo bem? Espero que sim!

Analisei o código, e sugiro que tente usar o diâmetro ao invés de se referir ao raio. Sendo assim, você mudará a função colisaoMinhaRaqueteBiblioteca que ficará dessa forma:

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

E assim a bolinha não irá ultrapassar o limite da raquete.

Corrigi o código e aumentei o tamanho da raquete para que assim evite algum bug que possa ocorrer, também aumentei a velocidade da bolinha. Deixarei o código abaixo com as alterações e sugestões caso queira implementá-las

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

//velocidade da bolilinha
let velocidadexBolinha = 4;
let velocidadeyBolinha = 4;

//variaveis da raquete
let xRaquete = 5
let yRaquete = 5
let raqueteComprimento = 12
let raqueteAltura = 80
let colidiu = true;

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

function draw() {
  background(0); mostraBolinha()
  movimentaBolinha()
  verficaColisaoBorda()
  mostraRaquete()
  movimentaMinhaRaquete()
//verificaColisaoRaquete()
  colisaoMinhaRaqueteBiblioteca();
}

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

function movimentaBolinha(){xBolinha += velocidadexBolinha; yBolinha += velocidadeyBolinha;
                           }

function verficaColisaoBorda(){
 
if (xBolinha + raio > width || xBolinha - raio <0){velocidadexBolinha *= -1;}
  
if (yBolinha + raio > height || yBolinha - raio <0){velocidadeyBolinha *= -1;}
}

function mostraRaquete(){rect(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
}
}

Espero ter ajudado!

Caso surjam dúvidas, fico à disposição.

Abraços e bons estudos!