Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] SOM EM LOOP

Estou finalizando o código, porém quando incluo o som da raquetada e o som do ponto, ambos aparecem em LOOP mesmo colocando .play. segue o código

//variaveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 15;

//variaveis velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6;

//variaveis diametro da bolinha let raio = diametro / 2;

//variaveis raquete let xRaquete = 5; let yRaquete = 150; let comprimentoRaquete = 10; let alturaRaquete = 90;

let colidiu = false;

//variaveis raquede do oponente let xRaqueteDoOponente = 585; let yRaqueteDoOponente = 150; let velocidadeYdoOponente

//placar do jogo let meusPontos = 0; let pontosDoOponente = 0;

//sons do jogo let raquetada; let ponto; let trilha;

function preload (){ trilha = loadSound ("trilha.mp3"); raquetada = loadSound ("raquetada.mp3"); ponto = loadSound ("ponto.mp3"); }

function setup() { createCanvas(600, 400); trilha.loop();

}

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); mostraRaquete (xRaqueteDoOponente, yRaqueteDoOponente); movimentaRaquete(); colisaoBolinhaRaqueteBiblio(xRaquete, yRaquete); colisaoBolinhaRaqueteBiblio(xRaqueteDoOponente, yRaqueteDoOponente); movimentaRaqueteDoOponente(); 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, comprimentoRaquete, alturaRaquete); }

function movimentaRaquete(){ if (keyIsDown (UP_ARROW)) { yRaquete -= 10}; if (keyIsDown (DOWN_ARROW)) {yRaquete +=10}; }

function verificaColisaoRaquete(){ if (xBolinha - raio < xRaquete + comprimentoRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete); }

function colisaoBolinhaRaqueteBiblio(x,y){ colidiu = collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio); if (colidiu){ velocidadeXBolinha *= -1}; raquetada.play(); }

function movimentaRaqueteDoOponente(){ velocidadeYdoOponente = yBolinha - yRaqueteDoOponente - comprimentoRaquete / 2 - 30; yRaqueteDoOponente += velocidadeYdoOponente;

}

function incluirPlacar(){ stroke (255); textSize (16); textAlign(CENTER); fill (color(255,140,0)); rect (130,10,40,20); fill (255); text (meusPontos, 150,26); fill (color(255,140,0)); rect (430,10,40,20); fill (255); text (pontosDoOponente, 450,26);

}

function marcaPonto(){ if (xBolinha > 590){meusPontos += 1} ponto.play();

if (xBolinha < 10){pontosDoOponente += 1} ponto.play();

}

4 respostas

Oioii, Camilla. O comando ''ponto.play();'' tem que ser colocado dentro do parêntese, assim:

function marcaPontos(){if(xBolinha>590){ meusPontos += 1 ponto.play(); }

if(xBolinha<10){ pontosOponente += 1 ponto.play(); }

}

Espero ter ajudado!

Oi Ana, tudo bem?? tentei dessa maneira também e nada. Até estou achando que é um bug talvez do navegador ou do site, já refiz o código inteiro e não sei onde está o problema, de qualquer maneira muito obrigada pela dica ;)

solução!

Os comandos para "chamar" o áudio devem estar entre "bigodes" {}

function colisaoBolinhaRaqueteBiblio(x,y){ 
colidiu = collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio); if (colidiu){ velocidadeXBolinha
raquetada.play()}}


function marcaPonto(){ if (xBolinha > 590){
  meusPontos += 1
  ponto.play()} ;

if (xBolinha < 10){
  pontosDoOponente += 1
ponto.play()
} ;

}

Oi André, é isso mesmo!!! muito obrigada, não me atentei a esse detalhe (agora não esqueço mais hehe).

Valeuuu