pilas-engine

Sonido en accion Actor

Hola! Respecto a incluir sonidos en acciones de un actor, vi la documentación para una versión anterior de pilas.
En la presente, yo intento poner sonido para el salto de un personaje, entonces, intercalo:

    if (this.control.arriba) {
  this.reproducir_sonido("salto-corto")
  this.y += 5*this.velocidad;

El tema es que (según entiendo), la acción se controla a un muestreo grande, entonces el sonido aparece como una superposición y nunca llega a escucharse correctamente.
this.reproducir_sonido tiene un solo argumento…
Hay alguna forma de hacer que se ejecute el sonido del “salto” y que por un intervalo no vuelva a ejecutarse así se reproduce correctamente?

Muchas gracias!!

¡Hola @Juan_D_Adamo!, se me ocurre una forma de evitar que se ejecute muchas veces el sonido:

Podrías tener una variable que almacene true cuando el sonido se está reproduciendo y usarla como variable de control para no reproducir el sonido muchas veces.

Viendo tu código, sería algo así:

if (this.control.arriba) {
    if (!this.sonando) {
      this.sonando = true;
      this.pilas.reproducir_sonido("salto-largo");

      this.pilas.luego(1/2, () => {
        this.sonando = false;
      })
    }

    this.y += 5*this.velocidad;
}

Obviamente hay que ajustar valores, asumí que el sonido dura medio segundo, pero esto puede variar en cada juego.

Aquí armé un ejemplo donde hay dos botones que reproducen el mismo sonido, el botón de la izquierda tiene esta demora, así que si lo pulsas muchas veces y muy rápido vas a notar que el sonido a veces no se reproduce. En cambio, el botón de la derecha no tiene esta demora, así que si lo pulsas muchas veces los sonidos se superponen entre sí:

Abrir este proyecto en el editor de pilas

Ojalá te sirva!

1 Like

Está perfecto! Ahi voy integrando este concepto del tiempo, ya lo agregué!!
Muchas gracias, Hugo!!