Oi galera! Estou começando agora, finalizei a aula 03 (Criando minha raquete no jogo), e esse é meu primeiro post aqui.
Estou tentando entender por que a função verificaColisaoRaquete() do meu código, que deveria rebater a bolinha quando ela colide com a raquete, não está funcionando.
Já reli e revi a aula referente a isso e a lógica me parece igual a que estou usando. Não sei se estou deixando passar algum erro bobo...
Alterei algumas coisinhas em relação ao que vimos na aula, como adicionar as variáveis para identificar as extremidades dos objetos, um código para não deixar as raquetes saírem da cena, e alterei a variável do y da raquete para que ela fique centralizada na cena. Porém, não sei se isso está influenciando no erro.
//variáveis background
let largura = 600;
let altura = 400;
// variáveis da bolinha
let xBolinha = largura/2;
let yBolinha = altura/2;
let diametro = 20;
let raio = diametro / 2;
//extremidades bolinha
let esqBolinha = (xBolinha - raio);
let direitaBolinha = (xBolinha + raio);
let topoBolinha = (yBolinha - raio);
let baseBolinha = (yBolinha + raio);
//variáveis de velocidade bolinha
let velocidadeX = 1;
let velocidadeY = 1;
//variáveis minha raquete
let xRaquete1 = 5;
let wRaquete1 = 7;
let hRaquete1 = 90;
let yRaquete1 = (altura/2)-(hRaquete1/2);
//extremidades minha raquete
let direitaRaquete = (xRaquete1 + wRaquete1);
let baseRaquete = (yRaquete1 + hRaquete1);
function setup() {
createCanvas(largura, altura);
}
function draw() {
background(0);
mostraBolinha();
moveBolinha();
voltaBolinha();
mostraRaquete();
moveRaquete();
verificaColisaoRaquete();
}
//desenha a bolinha
function mostraBolinha(){
circle(xBolinha,yBolinha,diametro);
}
//move a bolinha
function moveBolinha(){
xBolinha += velocidadeX;
yBolinha += velocidadeY;
}
//bate a bolinha de volta quando toca a borda
function voltaBolinha(){
if (xBolinha + raio > width || xBolinha - raio < 0) {
velocidadeX *= -1;
}
if (yBolinha + raio > height || yBolinha - raio < 0) {
velocidadeY *= -1;
}
}
//desenha a minha raquete
function mostraRaquete(){
rect(xRaquete1,yRaquete1,wRaquete1,hRaquete1)
}
//move minha raquete
function moveRaquete(){
if (keyIsDown(UP_ARROW) && yRaquete1 > 0) {
yRaquete1 -= 6;
}
if (keyIsDown(DOWN_ARROW) && (yRaquete1 + hRaquete1) < altura) {
yRaquete1 += 6;
}
}
//colisão bolinha com minha raquete
function verificaColisaoRaquete(){
if ((esqBolinha < direitaRaquete) && (topoBolinha < baseRaquete) && (baseBolinha > yRaquete1)){
velocidadeX *= -1;
}
}