Posso unir as duas funções que verificam a colisão da bolinha???
Posso unir as duas funções que verificam a colisão da bolinha???
Olá, Hilda! Tudo bem contigo?
Acho que não consegui entender muito bem rs
Poste seu código para que eu possa dar um olhada na estrutura
Fico no aguardo!
Um abraço
Olá, também estou com essa situação. Não utilizei a biblioteca para verificar se há colisão da bolinha com a raquete.
function verificaColisaoRaquete(x, y) {
if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) {
velocidadeXBolinha *= -1;
}
}
A verificação só está acontecendo para a minha raquete, para a raquete do oponente não.
Através da função a cima, é possível validar a colisão para as duas raquetes?
O instrutor no vídeo uniu as duas funções que verificam a colisão da bolinha na minha raquete e na raquete do oponente, mas ele estava usando o código da biblioteca que eu não usei. a minha pergunta é como unir as funções com o código que a gente fez na mão sem a biblioteca.
//variáveis da bolinha
let xBolinha = 300
let yBolinha = 200
let diametro = 15
let raio = diametro / 2
//velocidade da bolinha
let velocidadeXBolinha = 2
let velocidadeYBolinha = 2
//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;
//variáveis raquete oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;
let chanceDeErrar = 0;
//variáveis placar
let meusPontos = 0;
let pontosDoOponente = 0;
//sons do jogo
let ponto;
let raquetada;
let trilha;
function preload(){
ponto = loadSound("ponto.mp3")
raquetada = loadSound("raquetada.mp3")
trilha = loadSound("trilha.mp3")
}
function setup() {
createCanvas(600, 400);
trilha.loop();
}
function draw() {
background(0);
mostraBolinha();
velocidadeBolinha();
verificarColisaoBorda();
mostraRaquete(xRaquete, yRaquete);
movimentaMinhaRaquete();
verificaColisaoRaquete();
mostraRaquete(xRaqueteOponente, yRaqueteOponente);
movimentaRaqueteOponente();
verificaColisaoRaqueteOponente();
incluiPlacar();
marcaPonto();
calculaChanceDeErrar();
}
function mostraBolinha(){
circle (xBolinha, yBolinha, diametro)
}
function velocidadeBolinha(){
xBolinha += velocidadeXBolinha
yBolinha += velocidadeYBolinha
}
function verificarColisaoBorda(){
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, raqueteComprimento, raqueteAltura);
}
function movimentaMinhaRaquete() {
if (keyIsDown(UP_ARROW)) {
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
yRaquete += 10;
}
}
function verificaColisaoRaquete() {
if(xBolinha - raio < xRaquete + raqueteComprimento
&& yBolinha - raio < yRaquete + raqueteAltura
&& yBolinha + raio > yRaquete) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function verificaColisaoRaqueteOponente(){
if (xBolinha - raio < xRaqueteOponente + raqueteComprimento && xBolinha + raio > xRaqueteOponente
&& yBolinha - raio < yRaqueteOponente + raqueteAltura && yBolinha + raio > yRaqueteOponente)
velocidadeXBolinha *= -1;
}
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2 - 30;
yRaqueteOponente += velocidadeYOponente + chanceDeErrar
calculaChanceDeErrar()
}
function incluiPlacar(){
stroke(255);
textAlign(CENTER);
textSize(16);
fill(color(250,140, 0));
rect(150, 10, 40, 20);
fill(255)
text(meusPontos, 170, 26);
fill(color(250,140, 0));
rect(450, 10, 40, 20);
fill(255)
text(pontosDoOponente, 470, 26);
}
function marcaPonto() {
if (xBolinha > 592) {
meusPontos += 1;
}
if (xBolinha < 8) {
pontosDoOponente += 1;
}
}
function calculaChanceDeErrar() {
if (pontosDoOponente >= meusPontos) {
chanceDeErrar += 1
if (chanceDeErrar >= 39){
chanceDeErrar = 40
}
} else {
chanceDeErrar -= 1
if (chanceDeErrar <= 35){
chanceDeErrar = 35
}
}
}
Resolvi o meu da seguinte forma, não sei se foi a mais correta.
function verificaColisaoRaquete() {
if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function verificaColisaoRaqueteOponente() {
if (xBolinha + raio > xRaqueteOponente && yBolinha + raio > yRaqueteOponente && yBolinha + raio > yRaqueteOponente) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}