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

Eu fiz o código acompanhando o professor, mas a minha bolinha some quando eu executo o código...

//Variáveis da bolinha

var xBolinha = 300; var yBolinha = 200; var diametro = 15; var raio = diametro / 2;

// Variáveis da velocidade da bolinha

var velocidadeXBolinha = 6; var velocidadeYBolinha = 6;

// Variáveis da raquete

var xRaquete = 5; var yRaquete = 150; var comprimentoRaquete = 10; var alturaRaquete = 90;

var colidiu = false;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisao(); mostraRaquete(); movimentaRaquete(); //verificaColisao(); colisaoRaqueteBiblioteca();

}

function mostraBolinha() {

circle(xBolinha, yBolinha, diametro); }

function movimentaBolinha(){

xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

function verificaColisao(){

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 verificaColisao(){

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

}

function colisaoRaqueteBiblioteca(){

colidiu = collideRectCircle(xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);

if(colidiu) {

velocidadeXBolinha *= -1;

} }

A minha dúvida é, onde está o erro ? e por que a bolinha está sumindo ?

2 respostas
solução!

Oi oi, Igor! Como vai tudo por aí?

Testei seu código no meu p5.js e o erro ocorreu porque você inseriu o mesmo nome em duas funções diferentes e chamou na draw(). Isso gerou um conflito de informações e o comportamento inesperado.

Para solucionar o problema basta modificar o nome de uma das duas funções VerificaColisao(), vou disponibilizar o código para você:

//Variáveis da bolinha

var xBolinha = 300; 
var yBolinha = 200;
var diametro = 15;
var raio = diametro / 2;

// Variáveis da velocidade da bolinha

var velocidadeXBolinha = 6;
var velocidadeYBolinha = 6;

// Variáveis da raquete

var xRaquete = 5;
var yRaquete = 150;
var comprimentoRaquete = 10;
var alturaRaquete = 90;

var colidiu = false;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisao();
  mostraRaquete();
  movimentaRaquete();
  //verificaColisao();
  colisaoRaqueteBiblioteca();

}

function mostraBolinha() {

  circle(xBolinha, yBolinha, diametro);
}

function movimentaBolinha(){

  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

function verificaColisao(){

  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) {
        velocidadeXBolinha *= -1;
    }
}

function colisaoRaqueteBiblioteca(){

  colidiu =   
  collideRectCircle(xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);

  if(colidiu) {

    velocidadeXBolinha *= -1;
  }
}

Espero que tenha ajudado

Um abraço e bons estudos!

Mas que falta de atenção a minha kkkk, muito obrigado Camila !