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?
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:
- actions D'Animation
- actions composites
- 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();
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é
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));