Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
libGDX detiene la animación en el último cuadro

Tengo clase que se extiende Actor. Mis animaciones están en el método 'actuar' con el temporizador stateTime. A continuación se muestra un fragmento de esta clase:

 @Override public void act(float delta) { super.act(delta); stateTime += delta; if(!isDeath) { ... } else { if(!animationDead.isAnimationFinished(stateTime)){ textureRegion = animationDead.getKeyFrame(stateTime, true); } } }

animationDead tiene PLAYMODE.NORMAL

Estoy tratando de usar '!animationDead.isAnimationFinished(stateTime)' pero detiene mi animación después del primer cuadro. Me gustaría detener la animación después del último cuadro.

También estoy tratando de establecer stateTime = 0; pero lo mismo, deteniéndose después del primer cuadro.

La misma situación que tengo cuando presiono, por ejemplo, la tecla ESPACIO, mi 'actor' debería reproducir la animación de lucha. Pero para todos los cuadros de animación de lucha, tengo que mantener presionada la tecla de espacio. Un espacio de toque es un cuadro de animación.

Aquí hay un fragmento de este método:

 @Override public void act(float delta) { super.act(delta); stateTime += delta; if(!isAttacking()) { ... /* Keyboard events */ ... setAttacking(false); if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) { setAttacking(true); if (moveToRight) { textureRegion = animationAttack.getKeyFrame(stateTime,true); } else if (!moveToRight) { isPlayerFlippedToLeft = true; textureRegion = animationAttack.getKeyFrame(stateTime,true); } setPlayerWidthAndHeight(); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Cuando llamas a animationDead.getKeyFrame(stateTime, true); método en Animación, entonces Animation's se convierte en PlayMode.LOOP o PlayMode.LOOP_REVERSED dependiendo del modo de animación que tenga actualmente.

PlayMode.NORMAL de reproducción.NORMAL -> PlayMode.LOOP de reproducción.LOOP

PlayMode.REVERSED -> PlayMode.LOOP_REVERSED

isAnimationFinished(stateTime) devuelve verdadero si la animación terminaría si se reprodujera sin bucle .

¿Por qué no llamas a animationAttack.getKeyFrame(stateTime);

EDITAR

Ok, ahora estás usando animationAttack.getKeyFrame(stateTime);

Está utilizando el mismo stateTime para tres Animation diferentes, cuando llega el momento de mostrar la animación de animationDead , stateTime cruzó la frameduration del cuadro de animación y en ese momento isAnimationFinished(stateTime) devuelve verdadero, por lo que

 if(!animationDead.isAnimationFinished(stateTime)){ //condition false textureRegion = animationDead.getKeyFrame(stateTime); }

finalmente, la región de textura no tiene un marco de región de TextureRegion muerto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda