1
resposta

estou com problema na colisão e na aceleração da bolinha e da raquete inimiga elas batem e ficam mais rapida, tentei encontra o erro mas não achei.

// bolinha
let ybolinha = 200;
let xbolinha = 300;
let diametro = 22;
let raio = diametro / 2;

// velocidade
let velocidadebx = 3;
let velocidadeby = 3;

//raquete
let xraquete = 7
let yraquete = 150
let larguraraq = 10
let alturaraq = 90

//raquete oponente
let xinimigo = 585
let yinimigo = 150
let veloinimigoy;

let colidir = false;

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

function draw() {
  background(0);
 MostraBolinha();
 MoverBolinha();
 VerificaColisão();
  raquete(xraquete,yraquete);
  raquete(xinimigo,yinimigo);
  movimentaraquete();
  colisaoraquete(xraquete,yraquete);
  colisaoraquete(xinimigo,yinimigo);
movimentainimigo();}

function MostraBolinha(){circle(xbolinha,ybolinha,diametro);
                      }

function MoverBolinha(){
  xbolinha += velocidadebx ;
  ybolinha += velocidadeby;
  }

function VerificaColisão(){
  if (xbolinha + raio > width || xbolinha - raio < 0 ){
    velocidadebx *= -1;
  }
  if (ybolinha + raio > height || ybolinha - raio < 0) {
    velocidadeby  *= -1;
  } 
}

function raquete(x,y) 
{rect(x,y,larguraraq,alturaraq
     ); }

function movimentaraquete(){
  if(keyIsDown(UP_ARROW)){yraquete -=10;}
  if(keyIsDown(DOWN_ARROW)){yraquete +=10;}
} 

function colisaoraquete(x,y){
  colidir = collideRectCircle(x, y, larguraraq, alturaraq, xbolinha, ybolinha, raio);
 if (colidir){velocidadeby  *= -1.2;}
}

function movimentainimigo(){
  veloinimigoy = ybolinha - yinimigo - alturaraq / 2 - 30;
  yinimigo += veloinimigoy

}
1 resposta

Tubo bom Guilherme! Boa noite.

Cara analisei todo seu código e encontrei o problema, na sua função "colisaoraquete" tem um problema. Vou colocar ela aqui:

function colisaoraquete(x,y){
  colidir = collideRectCircle(x, y, larguraraq, alturaraq, xbolinha, ybolinha, raio);
 if (colidir){velocidadeby  *= -1.2;}
}

Nesta parte final:

{velocidadeby  *= -1.2;}

Na realidade deve ser a variável velocidadebx em vez da de y que está.

E está conta de *=-1.2 esta multiplicando sua velocidade toda vez que há colisão com a raquete, eu recomendo deixar ou 1, ou 2 para ter uma velocidade única consistente se você quiser claro.

Acredito que é isso! Vlw!