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

[Dúvida] A bolinha não colide com a raquete

Olá, o meu jogo não está funcionando corretamente, uma vez que não acontece a colisão da bolinha com a raquete com a solução da aula importando uma biblioteca. O arquivo do collide está correto e já foi referenciado no index.

SKETCH

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

//velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//variáveis da raquete
let xRaquete = 6
let yRaquete = 150
let comprimentoRaquete = 10
let alturaRaquete = 90

let colidiu = false

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete();
  movimentaRaquete()
  //verificaColisaoRaquete()
  colisaoMinhaRaqueteBiblioteca()
}

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, comprimentoRaquete, alturaRaquete)
}

function movimentaRaquete() {
  if (keyIsDown(UP_ARROW)) {
    yRaquete -= 10
  }
  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 10
  }
}

function verificaColisaoRaquete() {
  if (xBolinha - raio < xRaquete + comprimentoRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete - alturaRaquete) {
    velocidadeXBolinha *= -1  
  }
}

function colisaoMinhaRaqueteBiblioteca() {
  collideRectCircle(xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio)
  if (colidiu) {
    velocidadeXBolinha *= -1   
  }
}

INDEX

<html lang="en">
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.6.0/p5.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.6.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>
2 respostas
solução!

Oi Nyelton!! Na function colisaoMinhaRaqueteBiblioteca() , a condição (colidiu), não recebeu nenhuma atribuição dentro desta função. Você realmente se esqueceu dela. Bons estudos!

function colisaoMinhaRaqueteBiblioteca() {
  **colidiu**   = collideRectCircle(xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio)
  if (colidiu) {
    velocidadeXBolinha *= -1   
  }
}

Oii, Romeu!

Era isso mesmo, acabei me esquecendo dessa parte.

Muito Obrigado!