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

Bolinha está colidindo com os lados Y da minha raquete depois que baixei o arquivo

let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro / 1;

let velocidadeXbolinha = 2; let velocidadeYbolinha = 1;

let xRaquete= 5; let yRaquete = 150; let largura = 10; let comptrimento = 90;

let colidiu = false;

let xRaqueteOponente = 585; let yRaqueteOponente = 150;

let velocidadeYoponente;

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

function draw() { background(0); mostraBolinha(); movimentaBolinha(); colisao(); motraRaquete(xRaquete, yRaquete); MovimentaRaquete(xRaquete, yRaquete); //ColisaoRaquete(); motraRaquete(xRaqueteOponente, yRaqueteOponente); MovimentaRaqueteOponente(); ColisaoRaquete(xRaqueteOponente, yRaqueteOponente); colisaoMinhaRaqueteBlibioteca(); }

function mostraBolinha() {

circle(xBolinha, yBolinha, diametro);

}

function movimentaBolinha() {

xBolinha += velocidadeXbolinha; yBolinha += velocidadeYbolinha;

}

function colisao() {

if(xBolinha + raio > width || xBolinha - raio < 0 ) { velocidadeXbolinha *= -1; }

if (yBolinha + raio > height || yBolinha - raio < 0) { velocidadeYbolinha *= - 1; }

}

function motraRaquete(x, y) {

rect(x, y, largura, comptrimento);

}

function MovimentaRaquete() {

if(keyIsDown(UP_ARROW)) {

yRaquete -= 10;

} if(keyIsDown(DOWN_ARROW)) {

yRaquete += 10;

}

}

function MovimentaRaqueteOponente() {

velocidadeYoponente = yBolinha - yRaqueteOponente - comptrimento / 2 - 30; yRaqueteOponente += velocidadeYoponente;

}

function ColisaoRaquete(x, y) {

if(xBolinha - raio < x + largura && yBolinha + raio < y + comptrimento && yBolinha - raio > y) { velocidadeXbolinha -1; }

}

function colisaoMinhaRaqueteBlibioteca() { collideRectCircle(xRaquete, yBolinha, largura, comptrimento, xBolinha, yBolinha, raio); if(colidiu) { velocidadeXbolinha - 1; } }

2 respostas

Oi Thiago, tudo bem? Não consegui entender seu problema. Pode reformular sua pergunta? O lado Y que você fala é a parte de cima e de baixo da raquete? Manda o link do teu p5. Fica melhor para visualizar o código. Ou você pode colocar seu código dentro dessa </>.

Bons estudos.

solução!

Olá, Thiago! Analisei o seu código e entendo como algo muito bom a gente customizar nosso trabalho. No entanto é preciso ter atenção em relação a nomenclatura de variáveis, functions, tanto em relação a ortografia quanto por questões de legibilidade.

Vou deixar seu código funcionando mas seria interessante que você melhorasse essas questões. Levei um tempo para entender que você tinha trocado o nome da altura para largura e isso também consumiu tempo para descobrir o erro .

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2; //raio precisa dividir por 2

let velocidadeXbolinha = 2;
let velocidadeYbolinha = 1 ;

let xRaquete= 5;
let yRaquete = 150;
let largura = 10;
let comptrimento = 90;

let colidiu = false; 

let xRaqueteOponente = 585;
let yRaqueteOponente = 150;

let velocidadeYoponente; 

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colisao();
  motraRaquete(xRaquete, yRaquete);
  MovimentaRaquete(xRaquete, yRaquete);
  //ColisaoRaquete();
  motraRaquete(xRaqueteOponente, yRaqueteOponente);
  MovimentaRaqueteOponente();
  //ColisaoRaquete(xRaquete, yRaquete);
  colisaoMinhaRaqueteBlibioteca(xRaquete, yRaquete);
  colisaoMinhaRaqueteBlibioteca(xRaqueteOponente, yRaqueteOponente);
}

function mostraBolinha() {

  circle(xBolinha, yBolinha, diametro);

}

function movimentaBolinha() {

  xBolinha += velocidadeXbolinha; 
  yBolinha += velocidadeYbolinha;


}


function colisao() {

   if(xBolinha + raio > width || xBolinha - raio < 0 ) { 
    velocidadeXbolinha  *= -1; }


  if (yBolinha + raio > height || yBolinha - raio < 0) {
    velocidadeYbolinha *= - 1;
}

}

function motraRaquete(x, y) {

  rect(x, y, largura, comptrimento);

}


function MovimentaRaquete() {

  if(keyIsDown(UP_ARROW)) {

    yRaquete -= 10;

  }
  if(keyIsDown(DOWN_ARROW)) {

    yRaquete += 10;

  }  

}

function MovimentaRaqueteOponente() {

   velocidadeYoponente = yBolinha - 
   yRaqueteOponente - comptrimento / 2 - 30;
   yRaqueteOponente += velocidadeYoponente; 

}

function ColisaoRaquete(x, y) {

  if(xBolinha - raio < x + largura && yBolinha + raio < y + comptrimento && yBolinha - raio > y) {
      velocidadeXbolinha *=-1;
     }

}

function colisaoMinhaRaqueteBlibioteca(x, y) {
  colidiu = collideRectCircle(x, y, largura,comptrimento, xBolinha, yBolinha, raio);
  if(colidiu) {
     velocidadeXbolinha *= -1; //também precisa passar o comportamento correto
     }
}//faltou inserir a colidiu para ser verdadeira quando entrar na collideRectCircle

Não esqueça de chamar a biblioteca collide no seu index.html

Um abraço e bons estudos!