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

[Dúvida] Bolinha não toca a borda do lado direito

Durante os testes do placar a bolinha não tocava nunca na borda do lado inimigo.

//variaveis bolinha
let xBolinha = 200;
let yBolinha = 200;
let dBolinha = 30;
let raio = dBolinha /2;

//velocidade bolinha
let velocXBolinha = 4;
let velocYBolinha = 4;

//variaveis raquete
let xRaquete = 10
let yRaquete = 200
let wRaquete = 10
let hRaquete = 80
let colision = false

//variaveis op raquete
let xOpRaquete = 680
let yOpRaquete = 200
let wOpRaquete = 10
let hOpRaquete = 80
let velocYOpRaquete = 2

//placar
let meusPontos = 0
let opPontos = 0



function setup() {
  createCanvas(700, 500);
}


function draw() {
  background(0);
  mostraBolinha();
  movBolinha();
  verificaColisaoBorda();
  minhaRaquete(xRaquete, yRaquete);
  movMinhaRaquete();
  //coliRaquete();
  coliRaqueteBibli(xRaquete, yRaquete);
  //minhaRaquete(xOpRaquete, yOpRaquete);
  movOpRaquete();
  coliRaqueteBibli(xOpRaquete, yOpRaquete);
  incluiPlacar();
  marcaPontos();

}


function mostraBolinha() {
  circle(xBolinha,yBolinha,dBolinha);
}


function movBolinha() {
  xBolinha += velocXBolinha
  yBolinha += velocYBolinha
}


function verificaColisaoBorda() { 
  if (xBolinha + raio > width || xBolinha - raio < 0) { velocXBolinha *= -1}
  if (yBolinha + raio > height || yBolinha - raio < 0){ velocYBolinha *= -1}
}


function minhaRaquete(x, y) {
  rect(x, y, wRaquete, hRaquete)
}
  

function movMinhaRaquete(){
  if (keyIsDown(UP_ARROW)){ yRaquete -= 7}
  if (keyIsDown(DOWN_ARROW)){ yRaquete += 7}
  yRaquete = constrain(yRaquete, 0, 420)


}  
 

function coliRaquete() {
    if (xBolinha - raio < xRaquete + wRaquete && yBolinha - raio < yRaquete + hRaquete && yBolinha + raio > yRaquete) {velocXBolinha *= -1;}
}


function coliRaqueteBibli(x, y){
  colision =
  collideRectCircle(x, y, wRaquete, hRaquete, xBolinha, yBolinha, raio);
  if (colision){velocXBolinha *= -1;}
}


function movOpRaquete(){
  velocYOp = yBolinha - yOpRaquete - wRaquete / 2 - 30 ;
  yOpRaquete += velocYOp;
  yOpRaquete = constrain(yOpRaquete, 0, 420)
}


function incluiPlacar(){
  text (meusPontos, 300, 20)
  text (opPontos, 400, 20)
  fill (255)
}

function marcaPontos (){
  if (xBolinha > 685) {meusPontos += 1}
  if (xBolinha < 15) {opPontos +=1}
  
  
  
}
2 respostas
solução!

Olá, Fabricio! Como vai?

Testei o seu código e obtive o seguinte resultado:

GIF do resultado do código do jogo Pong feito pelo aluno no P5.JS

Era esse o resultado esperado? Caso ainda esteja com o erro, peço que mande aqui o link para o seu projeto ao invés do seu códgo, por gentileza.

Fico à disposição. Abraço!

Realmente por algum motivo não esta funcionando no meu projeto. Link do projeto abaixo:

https://editor.p5js.org/Kroikz/sketches/p9i9whQFw

Edit: mudei umas coisas, aqui e descobri algo a mais, entretanto sem sucesso na resolução, após comentar as linhas de colisao da raquete do oponente no draw a bolinha passa a colidir normalmente na parede, entretanto não sei oque fazer a partir desse momento para que a colisao inimiga e a da bolinha na parede funcionem mutuamente. Insira aqui a descrição dessa imagem para ajudar na acessibilidade Edit 2: Descobri o erro e resolvi, era uma besteira que eu havia feito, apaguei a "minhaRaquete(xOpRaquete, yOpRaquete);", oque fazia com que a colisão da bolinha não funcionasse corretamente, fiz o mesmo em "minhaRaquete(xRaquete, yRaquete);" e o mesmo "bug" ocorreu só que do outro lado, comentei a variável de movimento da raquete "movOpRaquete();" ao invés de apagar a variável "minhaRaquete(xOpRaquete, yOpRaquete);" para testar e simplesmente funcionou, mil perdoes por gastar seu tempo atoa.