Rotation de l'Image dans le sens Horaire à l'aide de LibGDX
Comment pouvons-nous faire pivoter une Image dans le sens Horaire à l'aide de LibGDX? ce que je cherche, c'est quand une image est chargée,supposons qu'une étoile, j'ai besoin de la faire tourner à partir du début de l'écran à la fin de l'écran à l'horizontale, avec une étoile en rotation,comment puis-je le faire dans libgdx?
- Votre question n'est pas très clair. Êtes-vous à la rotation d'une Texture, Sprite, ou de l'Image? Par "rotation du début de l'écran à la fin de l'écran à l'horizontale, avec une étoile en rotation" voulez-vous dire que vous souhaitez que l'étoile se déplace horizontalement lors de la rotation?
- désolé, je vais avoir une texture, oui.j'ai besoin d'elle pour être de rotation de la déplacer horizontalement
Vous devez vous connecter pour publier un commentaire.
Lorsque vous dessinez la Texture avec votre SpriteBatch, vous pouvez utiliser l'une des fonctions de dessin qui comprend la rotation. Cette javadoc dispose de toutes les fonctions de dessin: SpriteBatch
Vous pouvez garder une variable de position et de rotation, et d'augmenter la rotation et de la composante x de la position de chaque fois que vous vous rendez à faire pivoter tout en se déplaçant horizontalement.
Libgdx vous donne plus de moyens pour le faire:
Vous pouvez utiliser
Scene2D
et ajouter unImage
à votreStage
.Image
est une sous-classe deActor
, de sorte que vous pouvez ajouterAction
s il:Dans
render
vous pouvez ensuite appelerstage.act()
, qui met à jour la position, la rotation, l'échelle... de tous vosActor
s et ensuite appelerstage.draw()
qui feront appeldraw()
pour tous vosActor
s.Image déjà gère le
draw()
de sorte que vous n'avez pas besoin de se soucier de ça.Vous pouvez aussi le faire sans
scene2d
, par la mise à jour de tout vous-même:Vous pouvez stocker un
int rotationSpeed
en degrés/secVous pouvez stocker un
int moveSpeed
en unités/sec (peut-être de pixel, mais je vous propose d'utiliser la caméra ou de la fenêtre d'affichage et l'utilisation de votre propre unité, qui est la même sur tous les appareils)Stocker les
float angle
, qui est la rotation actuelle de votreTexture
et de stocker un
Vector2 position
, qui contient la position x et y de votreTexture
.Si vous souhaitez vous déplacer dans les directions x et y, vous pouvez également enregistrer un
Vector2 direction
, qui est normaliséeVector
, donnant le pourcentage de mouvement dans les directions x et y, mais c'est une autre histoire.Puis dans votre
render(float delta)
vous tout mettre à jour:Pour la rotation en sens horaire tout simplement utiliser un négatif
rotationSpeed
ou de remplacer leangle+=
avecangle-=
.Espère que cela aide.
Suivante est la mise en œuvre pour faire pivoter les sprite
D'abord régler le compteur de
Vous pouvez également utiliser le Scene2D actions. J'ai un exemple ici avec l'astéroïde de type chose tomber en bas de l'écran et la rotation.
http://www.netthreads.co.uk/2012/02/09/libgdx-scene2d-demo-with-scene-transitions/
Pour faire pivoter vers la gauche et à l'horizontale..
créer un textureRegion
puis
Vous pouvez aussi le faire comme ceci:
sur votre méthode de création de la
sur votre render(float delta)
Ici est un simple pour faire pivoter un acteur dans libgdx. Vous devez d'abord définir l'origine:
Et puis vous pouvez faire pivoter dans le sens horaire et dans le sens inverse en fonction de votre besoin:
Donc l'exemple suivant a fonctionné pour moi (rotation infinie)
Méthode 1: (recommandé)
Méthode 2: