2011-09-04 6 views
4

Je me demande s'il existe un moyen facile d'animer dans libgdx. Je pense à une API où je peux juste spécifier la durée et l'emplacement de fin de la texture (comme dans la bibliothèque Tween de Flash).Animation dans libgdx

J'ai cherché sur google et la chose la plus proche que j'ai eu, c'est la classe Animation que libgdx a, qui, je crois, exige que l'utilisateur spécifie une texture pour chaque image clé.

new Animation(0.5f, texture1, texture2, texture3); 

Répondre

11

Vous pouvez utiliser TextureRegion # split (texture, tileWidth, tileHeight) pour obtenir un groupe de régions de texture pour une texture, si elles sont disposées dans une grille. Vous pouvez également utiliser le TexturePacker sur un tas d'images libres pour les empaqueter en une seule texture, puis charger avec TextureAtlas. Cela a l'avantage de pouvoir enlever les espaces de chaque image pour mieux les emballer, et peut aussi faire des choses fantaisistes comme des alias (si deux images sont identiques, elles ne seront emballées qu'une seule fois). Nommez vos images de cadre comme anim_1.png, anim_2.png, etc et ensuite vous obtenez toutes les régions de texture nommées "anim" comme une liste ordonnée en fonction du nombre de cadres.

Notez également que la classe Animation dans libgdx est simpliste. N'hésitez pas à écrire le vôtre s'il ne répond pas à vos besoins. Une classe d'animation est seulement environ 20 lignes de code.

2

Cela dépend du type d'animation que vous voulez. Si c'est une animation basée sur différentes images, alors oui, vous devriez utiliser la classe Animation avec différentes régions de texture. Toutefois, si vous souhaitez une animation basée sur des interpolations de mouvement, vous devez utiliser une bibliothèque d'interpolation, comme dans Flash.

Libgdx dispose d'un assistant Interpolator intégré qui vous permet de créer des interpolations simples avec l'accélération. Si vous voulez un moteur d'interpolation complet comme Flash, jetez un oeil à la Java Universal Tween Engine.

0

L'animation dans libgdx est facile. Ce que je fais, c'est que j'utilise un tableau de texture ou de textureregion dans le paramètre Animation plutôt que de mettre beaucoup de texture ou de textures. Et après que je déclare je puis définir le mode de jeu de l'animation comme ceci ->animation.setPlayMode(Animation.PlayMode.LOOP); cela fonctionne. Je dessine l'animation en utilisant la variable float runTime qui est définie comme suit: runTime + = delta ou runTime = runTime + delta --> spriteBatch.draw(animation.getKeyFrame(runTime), x, y, width, height);