Je veux pouvoir faire ce que vous voyez dans l'image, mais avec un seul mur. Le joueur doit être capable de marcher de chaque côté du même objet . Autrement dit, le même mur est en dessous du héros lorsque je descends de lui, et il est au-dessus du héros si je viens d'en haut.
C'est comme deux profondeurs dans le même mur, donc ce n'est pas seulement une question de le dessiner avant ou après. Je pourrais couper l'objet en deux, mais ce serait la solution facile (et peut-être coûteuse en calcul). Comment dois-je procéder?
2d
draw-order
depth
Xkynar
la source
la source
Réponses:
Voici trois façons de procéder. Celui qui conviendra dépend du type (graphique) de jeu que vous créez.
Comme l'a déjà fait remarquer Fabinout: "Diviser l'objet en deux ... La partie supérieure est derrière le personnage et la partie inférieure est entre le joueur et le personnage." Si vous créez un jeu basé sur des tuiles rigides (les chemins indiqués sont les deux seuls chemins possibles près du mur), c'est probablement une bonne façon de le faire. Notez que pour que cela fonctionne, la distance entre les chemins supérieur et inférieur doit être au moins égale à la hauteur du caractère.
Un inconvénient de cette méthode est qu'elle n'aide que dans des cas comme celui-ci; ce n'est pas une stratégie générale pour empiler des sprites.
Dessinez tous les sprites - à la fois le joueur et le paysage - de haut en bas dans l'ordre de leur position «au niveau du sol» (base du mur, pieds du joueur). Cela entraînera automatiquement l'affichage du mur du bon côté, et c'est une stratégie courante pour les jeux de style «isométrique» et «2D RPG».
Un autre avantage de ceci est qu'il semble généralement bon même si des objets se croisent - par exemple, des personnages qui ne bloquent pas le mouvement des autres; marchant dans un champ d'herbes hautes. Les inconvénients sont que vous devez déterminer efficacement l'ordre de dessin (par exemple, trier vos sprites, ou avoir un tableau 2D de tuiles qui savent ce qu'ils contiennent) et que cela se complique lorsque vous avez des objets qui ne sont pas tous visuellement enracinés sur le même niveau du sol.
Avoir une «couche avant» et une «couche arrière» où votre personnage occupe l'un ou l'autre (et le mur est dessiné après l'arrière mais avant le devant). Selon la façon dont vous vous approchez du mur, le personnage passe au calque avant ou arrière par zones de déclenchement. C'est ainsi que les jeux Sonic the Hedgehog gèrent des choses comme les boucles.
L'avantage est que vous pouvez avoir essentiellement deux plans 2D indépendants sur lesquels construire vos éléments de niveau. Cependant, cela est plus approprié pour un jeu où le mouvement vertical saute, alors que d'après la forme de vos graphiques, votre jeu semble être un jeu où le mouvement vertical à l'écran se déplace avant / arrière sur le sol, et il y a beaucoup plus de deux positions différentes dans cette dimension.
la source
Dessinez les objets dans l'ordre de la
Y
valeur, de sorte que les objets "plus loin" (plus haut sur l'écran) sont dessinés avant / en dessous des objets "plus proches". C'est simple.Plus généralement, donnez simplement aux objets une valeur de profondeur (qui peut être implicitement basée sur
Y
ou explicitement définie, selon le jeu et les besoins) et restituer dans cet ordre.C'est "l'algorithme du peintre" à l'œuvre.
la source