1
resposta

ERRO.SOM.RAQUETE

BOA TARDE.

Quando insiro o codigo do som da raquete (raquetada.play) fica um som estranho, parece um bug. Alguem pode me ajudar

// variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15
let raio= diametro/2

//velocidade da bolinha 
let velocidadexBolinha = 6
let velocidadeyBolinha = 6

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

let colidiu = false;

//placar do jogo
let meusPontos=0
let pontosOponente = 0

//sons do jogo
let raquetada
let ponto
let trilha

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


// variáveis do oponente

let xRaqueteOponente = 585
let yRaqueteOponente = 150
let velocidadeYOponente

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



}

function draw() {
  background(0)
  mostraBolinha ()
  movimentaBolinha()
  verificaColisaoBorda()
  mostraRaquete(xRaquete, yRaquete)
  movimentaMinhaRaquete ()
  //verificaColisaoRaquete()
  verificaColisaoRaquete (xRaquete, yRaquete)
  verificaColisaoRaquete (xRaqueteOponente, yRaqueteOponente)
  movimentaRaqueteOponente()
  mostraRaquete (xRaqueteOponente, yRaqueteOponente)
  incluiPlacar()
  marcaPonto ()




}

function mostraBolinha (){ circle(xBolinha, yBolinha, diametro)}

function movimentaBolinha () {xBolinha += velocidadexBolinha
  yBolinha += velocidadeyBolinha}

function verificaColisaoBorda () {  if (xBolinha > width || xBolinha < 0) {velocidadexBolinha *= -1}

  if (yBolinha  > height || yBolinha <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   verificaColisaoRaquete (x,y){
  colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio)
  if (colidiu) {velocidadexBolinha *=-1}
     raquetada.play()

}

function movimentaRaqueteOponente () {
  velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2-30
  yRaqueteOponente += velocidadeYOponente

}

function incluiPlacar (){
  stroke (255)
  textAlign (CENTER)
  textSize (16 )
  fill (color (255,69,0))
  rect (150, 10, 40, 20)
  fill (255)
  text (meusPontos, 170, 26)
  fill (color (255,69,0))
  rect (450, 10, 40, 20)
  fill (255)
  text (pontosOponente, 470, 26)
}

function marcaPonto (){
  if (xBolinha > 600) {meusPontos+=1
  ponto.play ()
      }
  if (xBolinha<0) {pontosOponente+=1
   ponto.play ()
      }
}
1 resposta

Oi, Paulo! Tudo certo por aí?

O som da “raquetada”, em nosso jogo, deveria acontecer quando há a colisão da bolinha com as raquetes. Por esse motivo, precisamos deslocar o comando raquetada.play() da função verificaColisaoRaquete(), desta forma:

function verificaColisaoRaquete(x,y){
  colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio)
  if (colidiu) {
    velocidadexBolinha *= -1
    raquetada.play()
  } 
}

Quando a estrutura condicional if perceber que houve uma colisão com alguma das raquetes, ouviremos o som da “raquetada”, visto que alteramos a posição de raquetada.play(). Como inicialmente esse comando estava fora da condicional, toda vez que a função verificaColisaoRaquete() era chamada, ouvíamos o som da “raquetada”, tornando-o algo contínuo.

Paulo, espero que tenha compreendido minha explicação! Quaisquer dúvidas, fico à disposição para ajudá-lo.

Até mais e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.