Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Bolinha fica tremendo no meio da tela enquanto acompanha o oponente no eixo Y

Fiz todo o procedimento porem optei por não pegar a blibioteca do github mas meu codigo esta fazendo a bolinha ficar tremendo no eixo y aconteceu quando estava fazendo o codigo de colisao da raquete2


//variaveis da bolinha
let xbolinha = 300;
let ybolinha = 200; 
let dbolinha = 40
let raio = dbolinha / 2 ;

//velocidade da bolinha 
let velocidadexbolinha = 7; 
let velocidadeybolinha = 7;
//variavel da raquete
let xraquete = 5;
let yraquete = 150;
let raquetecomprimento = 10;
let raquetealtura = 90
//variaveis oponente  
let xraquete2 = 585;
let yraquete2 = 150;
let velocidadeyraquete2;
function setup() {
  createCanvas(600,400);
}
function draw() {
  background(0);
 mostraBolinha();
movimentaBolinha();
 Colisao();
  //variaveis da raquete
  MostrarRaquete(xraquete,yraquete);
Movimentaraquete1();
Verificacolisaoraquete1();
//variaveis raquete2
MostrarRaquete(xraquete2,yraquete2);
  Movimentaraquete2();
  Verificacolisaoraquete2()

}
function mostraBolinha(){
    circle(xbolinha, ybolinha, dbolinha);
}
function movimentaBolinha(){
  xbolinha += velocidadexbolinha ;
ybolinha += velocidadeybolinha; 
}
function Colisao(){
  if (xbolinha + raio  > width || 
    xbolinha - raio <0){
  velocidadexbolinha *= -1;
}
  if(ybolinha +raio > height|| 
     ybolinha -raio <0){
    velocidadeybolinha *= -1;
  }
}
function MostrarRaquete(x,y){
   rect(x,y , raquetecomprimento, raquetealtura);
}
function Movimentaraquete1(){
 if (keyIsDown(UP_ARROW)){
   yraquete -=10;}
 if (keyIsDown(DOWN_ARROW)){
   yraquete +=10;}}
function Verificacolisaoraquete1(){
if(xbolinha - raio < xraquete +raquetecomprimento&& ybolinha -raio <yraquete +raquetealtura && ybolinha+ raio>yraquete){
 velocidadexbolinha *= -1;  
} }
function Movimentaraquete2(){
  velocidadeyraquete2 = ybolinha-yraquete2-raquetecomprimento/2-30;
  yraquete2 +=velocidadeyraquete2
}
function Verificacolisaoraquete2(){
if(xbolinha - raio < xraquete2+raquetecomprimento&& ybolinha -raio <yraquete2 +raquetealtura && ybolinha+ raio>yraquete2){
 velocidadexbolinha *= -1;  
} }
1 resposta
solução!

Oi, Julius! Tudo bem?

Para resolvermos esse problema basta fazermos algumas pequenas alterações na função responsável pelo colisão entre a bolinha e a raquete do oponente: function Verificacolisaoraquete2(). Essa função não pode ser exatamente igual à função Verificacolisaoraquete1(), pois as duas raquetes estão em posições diferentes do eixo x e y na tela e possuem diferentes sentidos de contato/interação com a bolinha.

Com base nisso, deixaremos a função Verificacolisaoraquete2() da seguinte maneira:


function Verificacolisaoraquete2(){
  if(xbolinha + raio > xraquete2 && ybolinha - raio > yraquete2 &&
  ybolinha + raio < yraquete2 + raquetealtura){
   velocidadexbolinha *= -1;  
  }
 }

Espero ter ajudado!

Caso fique alguma dúvida, sinta-se à vontade para comunicar, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓