Actions des acteurs dans libgdx

J'ai fait mon acteur , mais je ne sais pas comment tirer parti des méthodes action et act. En dehors du Javadoc de base, je n'ai pas trouvé de bons tutoriels sur ces méthodes.

Quelqu'un peut-il fournir un exemple avec des commentaires pour les actions sur les acteurs?

22
demandé sur P.T. 2012-02-03 19:58:47

3 réponses

Cette réponse est rendue obsolète en raison de changements dans LibGDX. Pour une documentation à jour, Voir scene2d wiki page.

Il existe différentes actions disponibles dans LibGDX prêtes pour vous. Ils sont dans le paquet com.badlogic.gdx.scenes.scene2d.actions. Je dirais qu'il y a 3 types d'actions:

  1. actions D'Animation
  2. actions composites
  3. Autres actions

Les actions D'Animation modifient diverses propriétés de votre acteur, telles que l'emplacement, la rotation, l'échelle et de l'alpha. Ils sont:

  • FADEIN-change l'alpha de votre acteur de l'alpha actuel de l'acteur à 1
  • FadeOut-change l'alpha de votre acteur de l'alpha actuel de l'acteur à 0
  • fadeto-change l'alpha de votre acteur de l'alpha actuel de l'acteur à une valeur spécifique
  • MoveBy - déplace votre acteur par montant spécifique
  • MoveTo - déplace votre acteur à emplacement spécifique
  • RotateBy - tourne votre acteur par spécifique angle
  • RotateTo - tourne votre acteur à angle spécifique
  • ScaleTo-met votre acteur à l'échelle d'un facteur d'échelle spécifique

Les actions composites combinent plusieurs actions en une seule action, il y a:

  • Parallel-exécute des actions données en parallèle-toutes les actions à la fois
  • Sequence-exécute des actions données en séquence - les unes après les autres

Autres actions:

  • Repeat-répète une action donnée n fois
  • Forever-répète l'action donnée pour toujours
  • retard-retarde l'exécution d'une action donnée pour une durée spécifique
  • Remove-supprime l'acteur donné de la scène

Chaque action a une méthode statique $ qui crée une instance de cette Action. Exemple de création d'actions d'animation:

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

Exemple de création d'une séquence d'action plus complexe:

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
            );

Les actions D'Animation vous permettent également de spécifier Interpolator. Il existe différents implémentations:

  • AccelerateDecelerateInterpolator
  • AccelerateInterpolator
  • AnticipateInterpolator
  • DecelerateInterpolator
  • LinearInterpolator
  • OvershootInterpolator

Interpolateur Javadoc: Un interpolateur définit le taux de changement d'une animation. Cela permet aux effets d'animation de base (alpha, scale, translate, rotate) d'être accélérés, décélérés, etc. Pour définir interpolator sur votre action:

action.setInterpolator(AccelerateDecelerateInterpolator.$());

Lorsque votre action avec interpolator est prête, vous définissez cette action sur votre acteur:

actor.action(yourAction);

Pour exécuter toutes les actions définies pour les acteurs sur scène, vous devez appeler stage.acte(... dans votre méthode de rendu:

stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
72
répondu Ludevik 2014-04-22 07:28:02

Vous devriez essayer Universal Tween Engine. Il est facile à utiliser et vraiment puissant... et cela fait de la lecture d'animations complexes une promenade dans le parc car toutes les commandes peuvent être enchaînées. Voir les exemples ci-dessous.

Suit:

1. Télécharger la bibliothèque à partir de ici
2. créer une classe accesor. Vous pouvez gagner du temps et récupérer celui que j'utilisais à partir de ici.
3. dans votre classe de jeu, déclarez TweenManager

    public static TweenManager tweenManager;


Dans le créer méthode:

    tweenManager = new TweenManager();


Dans le rendre méthode:

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


4. Utilisez-le comme vous le souhaitez. Ex.

Déplacer l'acteur en position (100, 200) en 1,5 seconde avec interpolation élastique:

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


Créer une séquence complexe d'animations:

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);


Plus de détails ici

Mise à jour: lien mort remplacé

12
répondu sheitan 2015-09-24 09:51:32

Voici un lien utile pour les usages de la Classe com.badlogic.gdx.mathématique.Interpolation . Ainsi, par exemple, pour créer un moveTo ation avec un effet que vous pouvez simplement utiliser:

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

Si vous définissez votre Import DE CLASSE Actions comme statique (vous devez le définir manuellement):

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

Ensuite, vous pouvez utiliser vos actions comme ceci:

myActor.addAction(moveTo(100, 200, 0.7f, Interpolation.bounceOut)); 
11
répondu Drorasta 2012-11-26 14:10:12