Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Não enxergo o erro da bolinha não colidir já olhei o fórum mas também não achei.

Bolinha não esta colidindo com a raquete, não consegui intentificar o erro mesmo procurando no foruim, alguem pode me prestar um suporte provavelmente e algo bem facil mas não estou enchergando.

let xBolinha = 300;
let yBolinha = 200;
let diametro = 50;
let raio = diametro/2;

//variavel da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

let colidiu = false;


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

function draw() {
    background(0);
    mostraBolinha();
    movimentaBolinha();
    verificaColisaoBorda();
    mostraRaquete();
    movimentaMinhaRaquete();
    //VerificaColisaoRaquete();
    colisaoMinhaRaqueteBliblioteca();
}

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, 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 colisaoMinhaRaqueteBliblioteca(){
  colidiu = collideRectCircle(xRaquete,yRaquete,raqueteComprimento, raqueteAltura, xBolinha,yBolinha,raio);
    if(colidiu){
      velocidadeXBolinha *= -1;
    };
}

 <<!DOCTYPE html>
<html lang="en">
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/addons/p5.sound.min.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta charset="utf-8" />

  </head>
  <body>
    <main>
    </main>
    <script src="sketch.js"></script>
    <script src="p5.collide2d.js"></script>
  </body>
</html>
4 respostas

Mesma situação aqui kkkkkk, Espero que possam me ajudar

Olá amigo

A linha 30 está em comentário (//), se remover a bolinha volta colidir com a raquete.

Lucas Menger, vlw pela ajuda man, mas se estiver se referindo ao "//VerificaColisaoRaquete();" ele esta como comentário para não ser executado mesmo, estou importando de fora usando "" e aplicando no "colisaoMinhaRaqueteBliblioteca();" o resultado deveria ser o mesmo do que esta com (//) mas algo no cod importado deve esta errado.

muito obrigado por tentar me ajudar.

solução!

Boa noite Herverson,

fiz o teste com o seu código, ele está funcionando normalmente. O "problema" é o tamanho da bola, a verificação da colisão é sempre a partir do centro da bolinha, porém como a distância do centro da bolinha para a raquete é menor do que a distância do centro para o canto esquerdo da tela, parece que a bolinha está passando e o código não está funcionando.

O raio é 25, o tamanho da raquete é 10 e a distância da raquete para o canto da tela é apenas 5.

Experimente modificar o parâmetro final da função collideRectCircle para "diametro" ao invés de raio, ou diminua o valor do raio da bolinha.

Espero ter ajudado