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

Bolinha atravessa raquete

//Variaveis da bolinha

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

//Variaveis da velocidade
let velocidadeXBolinha = 2;
let velocidadeYBolinha = 2;

//Variaveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let alturaRaquete = 90;
let raqueteComprimento = 10;
let posicaoXRaquete = 2;
let posicaoYRaquete = 2;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificarBorda();
  mostrarRaquete();
  movimentaRaquete();
}

function mostraBolinha() {
  circle(xBolinha, yBolinha, diametro)
}

function movimentaBolinha() {
  xBolinha += velocidadeXBolinha;
  //yBolinha += velocidadeYBolinha;
}

function verificarBorda() {
  if (xBolinha + raio > width || xBolinha + raio < 0) {
    velocidadeXBolinha *= -1;
  }
  if (yBolinha + raio > height || yBolinha - raio < 0) {
    velocidadeYBolinha *= -1;
  }
}

function mostrarRaquete() {
  rect(xRaquete, yRaquete, raqueteComprimento, alturaRaquete);
}

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

function verificaColisaoRaquete() {
  if (xBolinha - raio < xRaquete + comprimentoRaquete) {
    velocidadeXBolinha *= -1;
  }
}

Minha bolinha atravessa a raquete. Verifiquei várias vezes e pra mim o código está idêntico ao do professor. Alguém poderia me ajudar?

1 resposta
solução!

Boa tarde Natalia, como vai?

Muito obrigado por compartilhar o seu código e segue a solução:

  • Para que a função 'verificaColisaoRaquete()' seja executada, é necessária adicionar no escopo do draw(), conforme o código abaixo:
function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificarBorda();
  mostrarRaquete();
  movimentaRaquete();
  verificaColisaoRaquete();
}
  • Fazendo isso, o seguinte erro aparecerá:

Uncaught ReferenceError: comprimentoRaquete is not defined (sketch: line 66)

  • Isso acontece pois criamos uma variável chamada raqueteComprimento. Sendo assim, altere o nome da variável conforme o código abaixo.
function verificaColisaoRaquete() {
  if (xBolinha - raio < xRaquete + raqueteComprimento) {
    velocidadeXBolinha *= -1;
  }
}

Desta forma, a colisão será reconhecida. Espero ter ajudado e conte com a Alura!

: )