Prezados, às vezes, do lado do jogador, ao pegar a bolinha "por cima" ou "por baixo" da raquete, a mesma não muda a direção e acaba "ricocheteando" na própria raquete.
Poderiam me ajudar a verificar o que ocorre? Segue meu código. (travei a trilha sonora
//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let velocidadeYBolinha = 3;
velocidadeXBolinha = 3;
raio = diametro / 2;
//variáveis da raquete
let xRaq = 5;
let yRaq = 150;
let lRaq = 10;
let hRaq = 90;
//variáveis do oponente
let xRaqOponente = 585;
let yRaqOponente = 150;
let velocidadeYOponente;
let chanceErrar = 0;
//Placar do Jogo
let meuspontos = 0;
let pontosoponente = 0;
//SonsdoJogo
let raquetada;
let ponto;
let trilha;
function preload() {
//trilha = loadSound ("trilha.mp3")
ponto = loadSound("ponto.mp3");
raquetada = loadSound("raquetada.mp3");
}
function setup() {
createCanvas(600, 400);
//trilha.loop()
}
function draw() {
background(0);
mostraBolinha();
movimentaBolinha();
verificaColisaoBorda();
mostraRaquete(xRaq, yRaq);
movimentaRaquete();
verificaColisaoRaquete();
verificaColisaoRaqueteOponente();
mostraRaquete(xRaqOponente, yRaqOponente);
movimentaRaqueteOponente();
incluirPlacar();
marcaPonto();
}
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 mostraRaquete(x, y) {
rect(x, y, lRaq, hRaq);
}
function movimentaRaquete() {
if (keyIsDown(UP_ARROW)) {
yRaq -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
yRaq += 10;
}
}
function verificaColisaoRaquete() {
if (
xBolinha - raio <= xRaq + lRaq &&
yBolinha - raio <= yRaq + hRaq &&
yBolinha + raio > yRaq
) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function verificaColisaoRaqueteOponente() {
if (
xBolinha + raio >= xRaqOponente + lRaq &&
yBolinha + raio > yRaqOponente - hRaq &&
yBolinha + raio > yRaqOponente
) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function movimentaRaqueteOponente() {
velocidadeYOponente = yBolinha - yRaqOponente - hRaq / 2;
yRaqOponente += velocidadeYOponente + chanceErrar;
calculaChancedeErrar();
}
function incluirPlacar() {
textAlign(CENTER);
textSize(16);
stroke(255);
fill(color(255, 140, 0));
rect(130, 10, 40, 20);
rect(430, 10, 40, 20);
fill(255);
text(meuspontos, 150, 26);
text(pontosoponente, 450, 26);
}
function marcaPonto() {
if (xBolinha > 590) {
meuspontos += +1;
ponto.play();
}
if (xBolinha < 10) {
pontosoponente += +1;
ponto.play();
}
}
function calculaChancedeErrar() {
if (pontosoponente >= meuspontos) {
chanceErrar += 1;
if (chanceErrar >= 39) {
chanceErrar = 40;
}
} else {
chanceErrar -= 1;
if (chanceErrar <= 35) {
chanceErrar = 35;
}
}
}
`