Boa tarde
Meu código não faz funcionar a pontuação para mim quando a bolinha bate na borda do oponente quando está próximo à raquete na parte de cima, o mesmo não acontece quando bate na parte de baixo.
E por que a bolinha às vezes entra no espaço entre a raquete e a borda.?
O que estou fazendo de errado.?
let xBolinha = 300;
let yBolinha = 200;
let diametro = 10;
let raio = diametro / 2;
let velocidadeXbolinha = 2;
let velocidadeYbolinha = 2;
let velocidadeXoponente = 2;
let velocidadeYoponente = 2;
let xRaquete = 5;
let yRaquete = 150;
let xRaqueteOponente = 587;
let yRaqueteOponente = 150;
let comprimentoRaquete = 8;
let alturaRaquete = 100;
let meusPontos = 0;
let pontosOponente = 0;
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
mostraBolinha();
velocidadeBolinha();
colisaoBorda();
mostraRaquete(xRaquete, yRaquete);
mostraRaquete(xRaqueteOponente, yRaqueteOponente);
movimentaRaquete();
movimentaRaqueteOponente();
colisaoRaquete();
colisaoRaqueteOponente();
placar();
marcaPonto();
}
function mostraBolinha() {
circle(xBolinha, yBolinha, diametro);
}
function mostraRaquete(x, y) {
rect(x, y, comprimentoRaquete, alturaRaquete);
}
function movimentaRaquete() {
if(keyIsDown(SHIFT)) {
yRaquete -= 10;
}
if(keyIsDown(CONTROL)) {
yRaquete += 10;
}
}
function movimentaRaqueteOponente() {
if(keyIsDown(UP_ARROW)) {
yRaqueteOponente -= 10;
}
if(keyIsDown(DOWN_ARROW)) {
yRaqueteOponente += 10;
}
}
function colisaoRaquete() {
if(xBolinha - raio < xRaquete + comprimentoRaquete
&& yBolinha - raio < yRaquete + alturaRaquete
&& yBolinha + raio > yRaquete) {
velocidadeXbolinha *= -1;
}
}
function colisaoRaqueteOponente() {
if(xBolinha + raio > xRaqueteOponente
&& yBolinha + raio < yRaqueteOponente + alturaRaquete
&& yBolinha + raio > yRaqueteOponente - alturaRaquete) {
velocidadeXbolinha *= -1;
}
}
function velocidadeBolinha() {
xBolinha += velocidadeXbolinha;
yBolinha += velocidadeYbolinha;
}
function colisaoBorda() {
if (xBolinha + raio > width || xBolinha - raio < 0) {
velocidadeXbolinha *= -1;
}
if (yBolinha + raio > height || yBolinha - raio < 0) {
velocidadeYbolinha *= -1;
}
}
function placar() {
fill(255);
text(meusPontos, 250, 40);
text(pontosOponente, 350, 40);
}
function marcaPonto() {
if(xBolinha > 595) {
meusPontos += 1;
}
if(xBolinha < 5) {
pontosOponente += 1;
}
}