Actualmente estoy desarrollando un juego de plataformas para crear niveles utilizando Phaser 3 y física arcade. Tengo un mapa de mosaicos que uso para el suelo. Para mosaicos animados, tengo un sistema en el que creo sprites en las posiciones en una cuadrícula similar al mapa de mosaicos. Lo tengo configurado para que cuando presiono "M" en el teclado, active un modo "creativo" y devuelva todos los sprites a sus posiciones iniciales. El problema es que las animaciones no están sincronizadas y por eso, aunque los sprites van a la posición correcta, la animación lo compensa y los sprites no están en su cuadrícula. He intentado detener e iniciar la animación cuando se reinician, pero no parece tener mucho efecto. ¿Es su forma de configurarlos en el cuadro 1 fácilmente? ¿Necesito restar el desplazamiento de fotogramas actual y usarlo para posicionarlos?
Bueno, no estoy al 100%, si esta es la solución que está buscando, pero con sprite.setFrame(...) ( enlace a la documentación ) puede establecer el marco de un sprite en un FrameIndex específico, y con this.anims.get(...).frames[0].textureFrame) ( enlace a Docs ) puede obtener el primer fotograma de una animación específica.
Entonces, en teoría, podrías hacer algo como:
sprite.setFrame(this.anims.get(animationName).frames[0].textureFrame) o si solo desea establecer el primer cuadro de la animación actual ( enlace a la documentación ). Establecer el progreso en 0 establece el cuadro en el primer cuadro de la animación actual.
sprite.anims.currentAnim.getFrameByProgress(0);