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

[Dúvida] Bolinha passa pela Raquete

A Bolinha esta passando diretamente pela Raquete, mas não consigo achar o que esta de errado com meu código.

//variáveis do Circle
let xCircle = 300;
let yCircle = 200;
let dCircle = 20;
let raio = dCircle / 2;
let esquerdaCircle = xCircle - raio;
let direitaCircle = xCircle + raio;
let inferiorCircle = yCircle + raio;
let superiorCircle = yCircle - raio;

//variáveis da velocidade2
let velocidadeXCircle = 6;
let velocidadeYCircle = 6;

//Raquete
let xRect = 5;
let yRect = 150;
let larguraRect = 10;
let alturaRect = 90;
let direitaRect = xRect + larguraRect;
let superiorRect = yRect;
let inferiorRect = yRect + alturaRect;

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

function draw() {
  background(0);
  circlePosition();
  circleMoviment();
  circleColision();
  rectPosition();
  rectMoviment();
  rectColision();
}

function rectPosition() {
  rect(xRect, yRect, larguraRect, alturaRect);
}
function rectMoviment() {
  if (keyIsDown(UP_ARROW)) {
    yRect -= 5;
  }
  if (keyIsDown(DOWN_ARROW)) {
    yRect += 5;
  }
}
function rectColision() {
  if (
    esquerdaCircle < direitaRect &&
    superiorCircle < inferiorRect &&
    inferiorCircle > superiorRect
  ) {
    velocidadeXCircle *= -1;
  }
}

function circlePosition() {
  circle(xCircle, yCircle, dCircle);
}
function circleMoviment() {
  xCircle += velocidadeXCircle;
  //yCircle += velocidadeYCircle;
}
function circleColision() {
  if (xCircle + raio > width || xCircle - raio < 0) {
    velocidadeXCircle *= -1;
  }
  if (yCircle + raio > height || yCircle - raio < 0) {
    velocidadeYCircle *= -1;
  }
}
2 respostas

Boa Tarde à Todos!

Tive o mesmo problema.

Estou preso neste módulo do curso, que é o meu primeiro, ou seja, pelo qual iniciei o curso do zero, ja a duas semanas, porque ja retornei ao início três vezes, para poder entender cada detalhe com precisão. Não quero passar para o módulo seguinte, sem ter a certeza de que compreendi o por que, de cada detalhe.

Ao me deparar com este problema, preciso entender onde está o erro. Ou seja:

Por que o código deixa de funcionar após nomearmos com variáveis, as diferentes extremidades tanto da bolinha como da raquete?

Enquanto a função esta assim:

function verificaColisaoRaquete() { if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; } tudo funciona perfeitamente. Mas quando renomeamos a função, para facilitar o entendimento e a identificação de cada uma, e ela fica assim:

function verificaColisaoRaquete() {	
if (esquerdaBolinha < direitaRaquete
    && superiorBolinha < inferiorRaquete
    && inferiorBolinha > superiorRaquete) {
    velocidadeXBolinha *= -1;
}

então a bolinha passa a não colidir mais com a raquete.

Li as respostas dadas ao Gabriel e percebi que foram apresentadas soluções porém sem explicação óbvia. Não tem como entender a solução, sem saber qual o erro que ela está corrigindo.

Preciso de uma resposta. Por favor. Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software