1
resposta

Bola nao colide na raquete do oponente (Pong com Javascript)

Oi, eu estava fazendo a aula Jogos clássicos parte 1: Pong com Javascript. Em uma parte da aula, o programador exportou o arquivo de outra biblioteca (colisão raquete oponente)

Eu fiz isso e deu certo, mas então eu decidir fazer isso sem exportar o arquivo. Agora a bolinha fica se mexendo somente somente no eixo Y, como se estivesse presa, ela não consegue ir para os lados. Deve ter dado algum conflito entre os algoritmos, mas eu estou começando agora, não sei como resolver.

poderiam me ajudar?

segue o código a baixo

let xBola = 300; let yBola = 200; let diametro = 30; let raio = diametro / 2;

let velocidadeXBola = 6; let velocidadeYBola = 6;

//variaveis da raquete let xRaquete = 5; let yRaquete = 150; let wRaquete = 10; let hRaquete = 90;

//variaveis do oponente let xRaquete2 = 585 let yRaquete2 = 150 let wRaquete2 = 10 let hRaquete2 = 90 let velocidadeYOponente;

function mostraBola(){circle (xBola, yBola, diametro);
}
function movimentoBola(){ xBola += velocidadeXBola yBola += velocidadeYBola
} 
function colisaoBorda(){
if (xBola + raio> width || xBola - raio < 0){ velocidadeXBola *= -1; } 
if (yBola + raio> height || yBola - raio < 0){ velocidadeYBola *= -1 } 
} 
function mostrarRaquete(){ rect(xRaquete, yRaquete, wRaquete, hRaquete); } 
function colisaobolaraqueteeu(){ 
if (xBola - raio < xRaquete + wRaquete && yBola - raio < yRaquete + hRaquete && yBola > yRaquete) velocidadeXBola *= -1; } 
function mostrarRaqueteOponente(){ rect(xRaquete2, yRaquete2, wRaquete2, hRaquete2); } 
function movimentoOponente(){ velocidadeYOponente = yBola - yRaquete2 - wRaquete / 2 - 60 yRaquete2 += velocidadeYOponente } 
function colisaoRaqueteOponente(){
if (xBola - raio < xRaquete2 + wRaquete2 && yBola - raio < yRaquete2 + hRaquete2 && yBola > yRaquete2) velocidadeXBola *= -1; }

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

function draw() { background(0); mostraBola();
movimentoBola();
colisaoBorda(); 
mostrarRaquete(); 
minhaquetemov(); 
colisaobolaraqueteeu(); 
mostrarRaqueteOponente();
movimentoOponente(); 
colisaoRaqueteOponente();
} 
function minhaquetemov(){
if (keyIsDown(UP_ARROW)){ yRaquete -= 10 } if (keyIsDown(DOWN_ARROW)){ yRaquete += 10 } }
1 resposta

Oi, Vinicius! Tudo bem?

Peço desculpas pela demora em te responder.

Caso ainda esteja com esse problema, você pode dar uma olhadinha na minha resposta para o seu outro tópico, a qual contém a solução para resolver a questão da bolinha se movimentando apenas verticalmente. Para acessá-la, basta clicar no link abaixo:

Fico à disposição para te ajudar caso surja alguma dúvida após a minha explicação ou ao longo dos seus estudos.

Até mais!