Comment un jeu 2D comme Zelda gère-t-il le personnage derrière les bâtiments où seule une partie de lui est montrée?

28

J'essaie de développer un jeu simple de style Zelda. J'ai trouvé ce sujet très utile

Comment LoZ: un lien vers le passé a-t-il géré les collisions de sous-tuiles?

que j'utilise comme référence pour développer mon mécanisme de détection de collision. Cependant, il y a quelque chose que je n'ai pas compris. Lorsque Link est derrière des bâtiments, seule une partie de lui est affichée. Quelqu'un peut-il m'aider à comprendre comment cet effet peut être atteint? Le bâtiment ne fait-il pas partie de l'arrière-plan?

Tinadm
la source
J'aime penser au style de rendu comme ayant une couche de sol (herbe, carrelage, etc.), une couche d'objet (pots, ennemis, shurbs, lien, etc.) et une couche de ciel (toits, pots levés, cimes d'arbres) , etc). La logique pour déplacer des choses entre les couches peut être un peu bizarre dans l'exemple des pots, mais c'est une autre question.
Benjamin Danger Johnson

Réponses:

32

Les jeux 2D en mosaïque ont généralement plus de calques qui s'affichent dans différentes couches - certains rendus en arrière-plan, d'autres au-dessus du joueur.

Cette partie du toit se rend au-dessus du joueur et c'est pourquoi le joueur peut aller derrière ce bâtiment.

Voici l'exemple d'image de mon jeu pour mieux expliquer: entrez la description de l'image ici

Blodyavenger
la source
Donc, le bâtiment lui-même peut faire partie de l'arrière-plan, mais le toit fait partie d'une couche différente dessinée au-dessus de la couche avec les sprites?
Tinadm
2
@Tinadm, il ne doit pas nécessairement s'agir de la totalité du toit, il pourrait simplement s'agir de la section de toit qui dessinerait sur le lecteur et qui serait rendue après tout le reste.
Tetrad
7
+1 pour des graphismes impressionnants. Aide vraiment les apprenants visuels.
UnderscoreZero
1
Je suis sûr que les anciens JRPG SNES utilisaient la même technique. FF2, FF5, etc. La technique est toujours valable.
Hatoru Hansou
1
Vous pouvez le voir assez bien avec les émulateurs, par exemple ZSNES, qui vous permettent de désactiver et d'activer manuellement les couches individuelles.
Tobias Kienzler
5

Bien que la réponse de Blodyavenger couvre la manière la plus probable de procéder, voici une autre possibilité qui permettrait un changement de perspective facile (par exemple quatre ou huit directions différentes, ou certains niveaux d'élévation de la caméra):

Considérez la vue de haut en bas de votre carte, par exemple

  ABCDEFGHIJKL
1 +-----=----+
2 |  .    .  |
3 |    X   o |
4 | .        ||
5 |    .   . |
6 +--=-------+

Où, disons, Xmarque un haut pilier. Pour chaque objet, vous stockez des images de toutes les perspectives possibles (ou utilisez les mêmes ...), qui peuvent être arbitrairement hautes de plusieurs tuiles. Maintenant, lorsque vous dessinez, commencez simplement par la colonne ou la ligne qui se trouve à l'arrière dans la perspective actuelle, par exemple la ligne 1 si vous regardez du sud. Après cela, dessinez la ligne / colonne la deuxième à l'arrière et ainsi de suite. De cette façon, lorsque quelque chose est supérieur à une tuile (étiré à la perspective actuelle), il se contentera de tirer ce qui se cache derrière.

(Désolé pour le manque de belles photos, je ne suis pas trop doué pour les graphismes appliqués ...)

Tobias Kienzler
la source
Notez comment vous pouvez facilement changer l'élévation de la caméra de cette façon en étirant les textures des objets
Tobias Kienzler
1

Vous devez avoir une variable pour la profondeur et avoir les images avec la plus grande profondeur dessinées en premier, puis les autres avec la profondeur la plus faible. Et la profondeur de chaque objet doit être égale au négatif de sa coordonnée y.

Depth=-y

Ahmed Elyamani
la source