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

[Dúvida] a colisão não está funcionando

//variaveis da raquete
let xraquete = 5;
let yraquete =150;
let comprimento = 10;
let altura = 90

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

//velocidade da bolinha
let velocidadeXBolinha = 1;
let velocidadeYBolinha = 0;

function setup() {
  createCanvas(600, 400);
}
function draw() {
  background(0);
  mostraRaquete()
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  movimentaMinhaRaquete();
}
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(){
  rect(xraquete,yraquete,comprimento,altura);
}
function movimentaMinhaRaquete(){
  if (keyIsDown(UP_ARROW)){
    yraquete-=10;
  }
    if (keyIsDown(DOWN_ARROW)){
    yraquete+=10;
  }
}
function colisao(){
  if(xBolinha - raio < xraquete + altura){
    velocidadeXBolinha *= -1;
  }
}
1 resposta
solução!

Oi Henrique! Tudo certo por aí?

Para a colisão funcionar, precisamos fazer dois pequenos ajustes no seu código. Vamos lá?

Chame a função colisao() dentro da função draw():

function draw() {
  background(0);
  mostraRaquete()
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  movimentaMinhaRaquete();
  colisao();
}

Na função colisao(), troque a variável altura pela variável comprimento :

function colisao(){
  if(xBolinha - raio < xraquete + comprimento){
    velocidadeXBolinha *= -1;
  }
}

Assim a colisão deve funcionar normalmente. Teste e me conte se deu certo!

Forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software