2
respostas

[Dúvida] A bolinha só se move no eixo Y quando acrescento a function movimentaRaqueteOponente

Pessoal, já fiz e refiz as aulas, já mudei o código e olhei linha por linha, mas a bolinha só move no eixo Y quando acrescento a function movimentaRaqueteOponente:

//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametroBolinha = 20; let raio = diametroBolinha / 2;

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

//variáveis da raquete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90;

//variáveis do oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente;

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

}

function draw(){ background(0) mostraBolinha(); movimentaBolinha(); verificaColisaoBorda () mostraRaquete(xRaquete, yRaquete); movimentoDaRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente); }

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

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(x, y) { rect(x, y,raqueteComprimento, raqueteAltura); }

function movimentoDaRaquete(){ if(keyIsDown(UP_ARROW)){ yRaquete -= 10; }

if(keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }

function verificaColisaoRaquete(x, y) { if (xBolinha - raio < x + raqueteComprimento && yBolinha - raio < y + raqueteAltura && yBolinha + raio > y){ velocidadeXBolinha *= -1; } }

function movimentaRaqueteOponente(x, y) { velocidadeYOponente = yBolinha -yRaqueteOponente -raqueteComprimento / 2 - 30; yRaqueteOponente += velocidadeYOponente; }

2 respostas

De acordo com o tutorial no 3.06 ele explica que precisa importar o arquivo p5.collide2d.js, para pode fazer o uso da funcao collideRectCircle. e para colidir a raquete do oponente vc precisa ver o tutorial 4.03 segue o codigo abaixo com a chamada da função collidRectCirlce

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

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

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//variáveis do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

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

function draw(){
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentoDaRaquete();
  //verificaColisaoRaquete(xRaquete, yRaquete);
  colisaoMinhaRaqueteBiblioteca();
  colisaoRaqueteOponenteBiblioteca();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  //verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente)
  movimentaRaqueteOponente();

}

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

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(x, y) { rect(x, y,raqueteComprimento, raqueteAltura); }

function movimentaRaqueteOponente(x, y) { 
  velocidadeYOponente = yBolinha -yRaqueteOponente -raqueteComprimento / 2 - 30; 
  yRaqueteOponente += velocidadeYOponente; }

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

//function verificaColisaoRaquete(x, y){
//  if (xBolinha - raio < x + raqueteComprimento){
//    velocidadeXBolinha *= -1;
//  }
//}

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

function colisaoRaqueteOponenteBiblioteca() {
    colidiu = collideRectCircle(xRaqueteOponente, yRaqueteOponente, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    if (colidiu){
        velocidadeXBolinha *= -1;
    }
}

Obrigada Mário. Eu tentei fazer se importar da biblioteca intencionalmente. Mas tudo bem, percebo que não dá certo mesmo. Obrigada