pilas-engine

Animación y sonido

Hola como están.
Estoy haciendo algo super sencillo y me ha complicado algo.
La idea es bien simple consiste que aparece una nave y al hacer clic sobre ella esta explota se elimina y reproduce un sonido de explosión. Se reinicia la escena la nave aparecer en otro lugar de la escena.
Pero al momento de hacer clic sobre la nave se elimina y se reinicia la escena. No se ejecuta la animación ni el sonido.
Como había comentado es algo muy simple y sencillo.
Aquí esta lo que he realizado hasta ahora.
Cual es el error o como debo mejora código.
Gracias…
https://app.pilas-engine.com.ar/#/proyecto/b5320c35-dad8-4085-a999-1f92dd804309

¡Hola @Marisol_Ramos !

Me gusta como va quedando el juego!!!, te comento lo que me parece que puede estar pasando.

En esta sección del código, pilas interpreta las lineas de código muy rápido:

  cuando_hace_click() {
    this.animacion = "explosion";
    this.eliminar();
    this.pilas.reiniciar_escena();
  }

es decir, aplica la animación de la explosión pero enseguida elimina al actor y cambia de escena, todo en el mismo cuadro de animación digamos.

Una forma de hacer que la animación se pueda ver es eliminar el actor luego de 2 o 3 segundos. Algo así:

  cuando_hace_click() {
    this.animacion = "explosion";

    // elimina al actor y pasa a la
    // siguiente escena luego de 2
    // segundos.
    this.pilas.luego(2, () => {
      this.eliminar();
      this.pilas.reiniciar_escena();
    });
  }

El único problema es que vas a notar que la animación se puede llegar a reproducir varias veces, porque dura menos de 2 segundos.

Otra cosa, que tal vez no quieras, es que la animación de la explosión se va a seguir moviendo como si fuera la nave, de hecho, para pilas sigue siendo la nave solo que tiene otra animación.

Una forma alternativa de hacer la explosión es con un actor que sirva de sustituto digamos. Es decir, podrías eliminar la nave ni bien es destruída y poner en su lugar un actor nuevo que solo haga la animación de explosión una sola vez.

Te paso un video en donde muestro esta estrategia y que te puede servir:

En tu juego, ese actor sustituto podría ser la explosión, de hecho pilas viene con un actor llamado explosión, tal vez podrías usar ese actor y modificar el método que se ejecuta cuando finaliza la animación:

Si incorporás la explosión como un actor separado, luego tendrías que cambiar el método de la nave para que simplemente se elimine y coloque la explosión en el lugar correcto:

  cuando_hace_click() {
    this.eliminar();
    this.pilas.clonar_en("explosion", this.x, this.y)
  }

Avisame cualquier cosa!

Muchas gracias.
Voy a ver el video y arreglar el código.
Muy agradecida.
Abrazos

1 Like