3
respostas

bug colisão não funciona

Então o gui ensinou como faz a questão de colisão eu fiz e deu certo, soq quando fui fazer pra raquete inimiga o mesmo comando, a raquete principal parou de funcionar a colisão e a do inimigo também. Agm tem alguma ideia de como resolve isso ? https://editor.p5js.org/Tonidxd/sketches/V9mGELppN aqui o link do meu codigo.

3 respostas

Oi, Antônio! Tudo bem?

Podemos notar que dentro da function draw os dois comandos para reconhecer a colisão, tanto o ensinado pelo professor quanto o da biblioteca, estão declarados. Dessa forma, como ambos retornam a inversão do sentido de movimento da bolinha, por meio da multiplicação da velocidadeXBolinha por -1, é como se estivessimos multiplicando duas vezes o valor da velocidadeXBolinha por -1. Entretanto, (-1) * (-1) = 1, logo, o valor da velocidadeXBolinha não é alterado, pois qualquer valor multiplicado por 1 resulta nele mesmo.

Para resolvermos o nosso problema basta comentarmos a chamada da função colisionRectP() dentro da função draw, deixando-a da seguinte forma:

function draw() {
  background(0);
  showBall();
  movimentBall();
  conditionalColisionBall();
  showRectP();
  movimentRect();
  //colisionRectP();
  colisaoRaquetePrincipalBiblioteca();

Espero ter ajudado! Caso fique alguma dúvida, sinta-se à vontade para comunicar, estou à disposição!

Um forte abraço e bons estudos!

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

Certo se eu entendi bem ent basicamente agnt comenta esse comando do colisionRect porque se não ficaria dois comandos de colisão ( colisionRect e o colisionRectBiblioteca) e basicamente os dois comandos trabalham com a inversão de sentido usando o "xVelocidadeBolinha" multiplicando essa velocidade por "-1" ou seja estaria errado porque ficaria " -1*-1" é isso?

Oi, Antônio! É exatamente isso, a sua compreensão está correta!

Ao comentarmos a função ela não será executada no código, logo, o sentido do movimento da bolinha será invertido normalmente, pois xVelocidadeBolinha será multiplicado por -1 apenas uma vez.

Um forte abraço e bons estudos!