1
resposta

Bolinha não esta colidindo com a raquete oponente

Ontem estudando o curso tentei fazer essa etapa utilizando um codigo criado com base na minha raquete porem sem exito e hoje ao tentar utilizar o codigo fornecido pelo git hub quando a bolinha tenta colidir com a raquete do adversario ela ainda esta passando por ela abaixo segue o codigo no qual gostaria de uma ajuda

//variaveis da bolinha 
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

//velocidade da bolinha 
let velocidadeXbolinha = 1;
let velocidadeYbolinha = 1;

// variaveis da raquete 
let x_raquete = 5; 
let y_raquete = 200; 
let esp_raquete = 10; 
let alt_raquete = 100;

let colidiu = false;

//variaveis oponente
let x_oponente = 485;
let y_oponente = 200;
let velocidadeyOponente;

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

function draw(){
background(0);
mostraBolinha();
movimentaBolinha();
verificaColisaoBorda();
raqueteJogador();
movimentaRaqueteJogador();
colisaoRaquete();
raqueteOponent();
movimentaRaqueteoponente();
colisaoRaqueteBiblioteca();
colisaoRaqueteOponenteBiblioteca();
}

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

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 raqueteJogador(){
rect (x_raquete,y_raquete,esp_raquete,alt_raquete);
}

function raqueteOponent(){rect(x_oponente,y_oponente,esp_raquete,alt_raquete);}

function movimentaRaqueteJogador(){
  if (keyIsDown(UP_ARROW)){
    y_raquete -= 10;
}
  if (keyIsDown(DOWN_ARROW)){
     y_raquete += 10;
}
}

function colisaoRaquete(){
  if (xBolinha -raio < x_raquete+esp_raquete && yBolinha -raio < y_raquete + alt_raquete && yBolinha +raio > y_raquete){
    velocidadeXbolinha *= -1
  } 
}

function movimentaRaqueteoponente (){
    velocidadeyOponente = yBolinha - y_oponente - esp_raquete / 2 -30;
    y_oponente += velocidadeyOponente;
    }

function colisaoRaqueteBiblioteca(){
colidiu=
collideRectCircle(x_raquete, y_raquete, esp_raquete, alt_raquete, xBolinha,yBolinha,raio);
if (colidiu){velocidadeXbolinha *=1}
}

function colisaoRaqueteOponenteBiblioteca(){
colidiu=
collideRectCircle(x_oponente, y_oponente,esp_raquete, alt_raquete,xBolinha,yBolinha,raio);
if (colidiu){velocidadeXbolinha *=1}
}
1 resposta

Oi, Igor! Tudo bem?

Para conseguirmos reconhecer a raquete e tornar a colisão entre ela e a bolinha possível, precisamos apenas fazer uma pequena alteração nas funções colisaoRaqueteBiblioteca() e colisaoRaqueteOponenteBiblioteca().

Note que, em ambas as funções, ao testarmos na condição if se colidiu é verdadeiro, não acontecerá nada com a nossa velocidadeXbolinha, pois esse valor está sendo multiplicado por 1 e qualquer valor multiplicado por é igual a ele mesmo.

Para que a bolinha ao colidir com a raquete retorne devemos, então, apenas trocar o valor 1 que multiplica velocidadeXbolinha por -1, deixando as funções da seguinte forma:

function colisaoRaqueteBiblioteca(){
colidiu=
collideRectCircle(x_raquete, y_raquete, esp_raquete, alt_raquete, xBolinha,yBolinha,raio);
if (colidiu){velocidadeXbolinha *=-1}
}
function colisaoRaqueteOponenteBiblioteca(){
colidiu=
collideRectCircle(x_oponente, y_oponente,esp_raquete, alt_raquete,xBolinha,yBolinha,raio);
if (colidiu){velocidadeXbolinha *=-1}
}

Espero ter ajudado!

Caso você possua alguma dúvida, sinta-se a vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓