2013-08-15 3 views
1

En bref:LibGDX rendu Sprite/carrelage derrière et devant un objet

  • J'utilise carrelé comme mon carrelage éditeur.
  • J'utilise LibGDX. J'ai tout pour travailler pour un vieux jeu de style Pokémon.

Mon problème:

Je ne suis pas la création de Pokémon. Mon sprite est de 60x20 pixels, mais je ne veux que les 20x20 pixels du bas (mes pieds) comme zone de collision.

Maintenant, prenez un arbre, avec un fond 20x20pixels unwalkable:

Quand je viens du fond, je veux que les 40 pixels au-dessus des pieds à montré Infront de l'arbre. Cela signifie 20 pixels devant le fond, et 20 pixels au-dessus, en face des arbres réels. Mais, quand je me tiens juste au-dessus du bas de l'arbre, je veux que mon joueur soit complètement couvert derrière l'arbre. Lorsque je programmais sans LibGDX (sur un ordinateur de bureau, bas bas de gamme), je rendais d'abord tous les pixels au-dessus de ma position, puis vérifiais tout élément devant/au-dessous de moi, puis restituais tout le reste.

Maintenant, je ne sais pas quand même rendre quelques pixels quand j'utilise un OrthogonalTileMapRenderer.

Répondre

2

Je pense qu'il n'y a pas de solution utilisant uniquement TiledMapRenderer pour rendre des couches entières. Imaginez que vous ayez deux arbres, l'un au-dessus de l'autre, avec un seul espace entre les deux. Votre personnage est debout sur cette seule tuile et est donc entre les deux arbres. Il serait derrière l'un et devant l'autre. Dans ce cas, il est impossible de rendre tout le calque à la fois, car votre personnage sera soit devant les deux, soit derrière les deux arbres. Vous pouvez toujours créer votre carte en utilisant TilEd, mais vous aurez besoin d'analyser cette couche spéciale avec des objets et de la convertir en une liste d'entités où vous pouvez appliquer la commande Z manuelle (bien, Y-Ordering dans l'espace 2D) du fond au premier plan et les rendre individuellement dans le bon ordre.

+0

Merci beaucoup! Si je pouvais "vous", je le ferais! Je pense que j'ai tout compris et je vais laisser un code complet si je le fais fonctionner! – user2687506

Questions connexes