Acciones de los actores en libgdx

He hecho mi Actor , pero no estoy claro cómo aprovechar los métodos de action y act . Fuera del Javadoc básico, no he encontrado un buen tutoriales sobre estos métodos.

¿Puede alguien dar un ejemplo con comentarios para las acciones sobre los actores?

Esta respuesta está siendo obsoleta debido a cambios en LibGDX. Para documentación actualizada, vea la página wiki de scene2d .

Existen varias acciones disponibles en LibGDX listas para usted. Están en el paquete com.badlogic.gdx.scenes.scene2d.actions . Yo diría que hay 3 tipos de acciones:

  1. Acciones de animación
  2. Acciones compuestas
  3. Otras acciones

Las acciones de animación modifican diversas propiedades de su actor, como ubicación, rotación, escala y alfa. Son:

  • FadeIn – cambia alfa de tu actor de alfa actual del actor a 1
  • FadeOut – cambia el alfa de tu actor del alfa actual del actor a 0
  • FadeTo – cambia alfa de tu actor del alfa actual del actor a un valor específico
  • MoveBy – mueve a tu actor por cantidad específica
  • MoveTo: mueve tu actor a una ubicación específica
  • RotateBy – gira tu actor por ángulo específico
  • RotateTo – gira tu actor a un ángulo específico
  • ScaleTo – escala su actor a un factor de escala específico

Las acciones compuestas combinan múltiples acciones en una acción, existen:

  • Paralelo – ejecuta acciones dadas en paralelo – todas las acciones a la vez
  • Secuencia – ejecuta acciones dadas en secuencia – una tras otra

Otras acciones:

  • Repetir – repite la acción dada n veces
  • Forever – repite una acción dada para siempre
  • Retardo – retrasa la ejecución de una acción determinada por un período específico de tiempo
  • Eliminar – elimina el actor dado de la etapa

Cada acción tiene un método estático $ que crea la instancia de esa Acción. Ejemplo de creación de acciones de animación:

 MoveTo move = MoveTo.$(200, 200, 0.5f); //move Actor to location (200,200) in 0.5 s RotateTo rotate = RotateTo.$(60, 0.5f); //rotate Actor to angle 60 in 0.5 s 

Ejemplo de creación de una secuencia de acción más compleja:

 Sequence sequence = Sequence.$( MoveTo.$(200, 200, 0.5f), //move actor to 200,200 RotateTo.$(90, 0.5f), //rotate actor to 90° FadeOut.$(0.5f), //fade out actor (change alpha to 0) Remove.$() //remove actor from stage ); 

Las acciones de animación también le permiten especificar Interpolator . Hay varias implementaciones:

  • AccelerateDecelerateInterpolator
  • AccelerateInterpolator
  • AnticipateInterpolator
  • DecelerateInterpolator
  • Interpolador Lineal
  • OvershootInterpolator

Interpolador Javadoc: Un interpolador define la velocidad de cambio de una animación. Esto permite acelerar, desacelerar los efectos de animación básicos (alpha, scale, translate, rotate). Para configurar el interpolador a su acción:

 action.setInterpolator(AccelerateDecelerateInterpolator.$()); 

Cuando usted tiene su acción con el interpolador listo, entonces usted fija esa acción a su agente:

 actor.action(yourAction); 

Para ejecutar todas las acciones definidas para los actores en el escenario, tiene que llamar a stage.act (…) en su método render:

 stage.act(Gdx.graphics.getDeltaTime()); stage.draw(); 

Aquí hay un enlace útil para los usos de la clase com.badlogic.gdx.math.Interpolation . Así, por ejemplo, para crear un movimiento con un efecto que podría simplemente utilizar:

 myActor.addAction(Actions.moveTo(100, 200, 0.7f, Interpolation.bounceOut)); 

Si establece la clase de acciones import como estática (tiene que configurarla manualmente):

 import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*; 

Entonces, puedes usar tus acciones como estas:

 myActor.addAction(moveTo(100, 200, 0.7f, Interpolation.bounceOut)); 

Usted debe dar una oportunidad a Universal Tween Engine. Es fácil de usar y muy potente … y hace que la lectura de animaciones complejas pasee por el parque porque todos los comandos pueden ser encadenados. Vea los ejemplos abajo.

Pasos:

1. Descargue la biblioteca de aquí
2. Cree una clase de accesor. Usted puede ahorrar el tiempo y asir el que yo estaba usando desde aquí .
3. En su clase de juego declare el TweenManager

  public static TweenManager tweenManager; 

En el método create :

  tweenManager = new TweenManager(); 

En el método render :

  tweenManager.update(Gdx.graphics.getDeltaTime()); 

4. Utilícelo como quiera. Ex.

Mueva el actor a la posición (100, 200) en 1,5 segundos con interpolación elástica:

 Tween.to(actor, ActorAccesor.POSITION_XY, 1.5f) .target(100, 200) .ease(Elastic.INOUT) .start(tweenManager); 

Crear una secuencia compleja de animaciones:

 Timeline.createSequence() // First, set all objects to their initial positions .push(Tween.set(...)) .push(Tween.set(...)) .push(Tween.set(...)) // Wait 1s .pushPause(1.0f) // Move the objects around, one after the other .push(Tween.to(...)) .push(Tween.to(...)) .push(Tween.to(...)) // Then, move the objects around at the same time .beginParallel() .push(Tween.to(...)) .push(Tween.to(...)) .push(Tween.to(...)) .end() // And repeat the whole sequence 2 times .repeatYoyo(2, 0.5f) // Let's go! .start(tweenManager); 

Más detalles aquí

UPDATE: reemplazado enlace muerto

  • ¿ClickLIstener no está trabajando en el juego de LibGdx?
  • Recortar la imagen con libgdx
  • libgdx spritebatch no dibuja basado en el origen de una textura
  • ¿Cómo mostrar el texto con un fondo de dos colores?
  • Desplazamiento pequeño al calcular la rotación en función del punto de contacto
  • Cómo conseguir Libgdx Game en Android Studio para ejecutarse en un dispositivo iOS?
  • LibGDX movimiento no suave
  • Está llamando libgdx SpriteBatch método de inicio y fin varias veces caro?
  • En libgdx, ¿cómo puedo obtener información del botón de retroceso?
  • ¿Cómo usar el sombreado de píxeles para lograr un texto suave?
  • ¿Cómo puedo hacer algo cada segundo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.