Segue: https://editor.p5js.org/maro3510/full/ZCoUi_Kun
Tentei fazer atalhos para os calculos de pontos de colisão como let xRaqueteMaisLarguraRaquete = xRaquete + larguraRaquete;, mas sempre que execultava a bolinha passava por dentro da raquete, ignorando meu código de colisão.
Alguém sabe o por quê?
//PROPRIEDADES DA RAQUETE
let xRaquete = 5;
let alturaRaquete = 70;
let yRaquete = 200 - alturaRaquete/2;
let larguraRaquete = 10;
let arestasRaquete = 45;
let movimentoRaquete = 10;
//let xRaqueteMaisLarguraRaquete = xRaquete + larguraRaquete;
//let yRaqueteMaisAlturaRaquete = yRaquete + alturaRaquete;
//PROPRIEDADES DA RAQUETE INIMIGA
//let alturaRaqueteInimiga = alturaRaquete;
//let larguraRaqueteInimiga = larguraRaquete;
//let xRaqueteInimiga = 600 - 5 - larguraRaqueteInimiga;
//let yRaqueteInimiga = 200 - alturaRaqueteInimiga/2;
//let raioRaqueteInimiga = alturaRaquete;
//PROPRIEDADES DA BOLINHA
let xBolinha = 300;
let yBolinha = 200;
let diametroBolinha = 15;
let raioBolinha = diametroBolinha / 2;
//let xBolinhaMenosRaioBolinha = xBolinha - raioBolinha;
//let yBolinhaMenosRaioBolinha = yBolinha - raioBolinha;
//let yBolinhaMaisRaioBolinha = yBolinha + raioBolinha;
//AÇOES DA BOLINHA
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let colisao = false;
function setup() {
createCanvas(600, 400);
}
function draw() {
background(50);
}
function draw(){
background(0);
propriedadesDaBolinha()
moverBolinha()
colisaoDaBolinha()
propriedadesDaRaquete()
// propriedadesDaRaqueteInimiga()
//verificaColisaoRaquete()
colisaoBolinhaBiblioteca()
}
function propriedadesDaBolinha(){
circle(xBolinha, yBolinha, diametroBolinha);
}
function moverBolinha(){
xBolinha += velocidadeXBolinha
yBolinha += velocidadeYBolinha
}
function colisaoDaBolinha(){
if (xBolinha + raioBolinha > width||
xBolinha - raioBolinha < 0){
velocidadeXBolinha *= -1
}
if (yBolinha + raioBolinha > height ||
yBolinha - raioBolinha < 0){
velocidadeYBolinha *= -1
}
}
function propriedadesDaRaquete(){
rect(xRaquete, yRaquete, larguraRaquete, alturaRaquete, arestasRaquete)
if (keyIsDown(UP_ARROW)){
yRaquete -= movimentoRaquete;
}
if (keyIsDown(DOWN_ARROW)){
yRaquete += movimentoRaquete
}
}
function propriedadesDaRaqueteInimiga(){
rect(xRaqueteInimiga, yRaqueteInimiga, larguraRaqueteInimiga, alturaRaqueteInimiga, raioRaqueteInimiga);
}
function verificaColisaoRaquete(){
if (xBolinha - raioBolinha < xRaquete + larguraRaquete
&& yBolinha - raioBolinha < yRaquete + alturaRaquete
&& yBolinha + raioBolinha > yRaquete) {
velocidadeXBolinha *= -1;
}
}
function colisaoBolinhaBiblioteca(){
colisao =
collideRectCircle(xRaquete, yRaquete, larguraRaquete, alturaRaquete, xBolinha, yBolinha, raioBolinha);
if (colisao){
velocidadeXBolinha *= -1;
}
}