Comment gérer les objets de jeu avec deux profondeurs?


8

bas de l'objet sous le joueur, son haut sur le joueur

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?


3
Diviser l'objet en deux semble la façon la plus naturelle de le faire. La partie supérieure est derrière le personnage, et la partie inférieure est entre le joueur et le personnage. Toujours pas coûteux en calcul, il suffit de s'assurer que les deux parties ne s'éloignent pas l'une de l'autre.
Fabinout

Vous devrez probablement le faire, mais avez-vous d'autres idées?
Xkynar

Réponses:


8

Voici trois façons de procéder. Celui qui conviendra dépend du type (graphique) de jeu que vous créez.

  1. 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.

  2. 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.

  3. 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.


L'utilisation de couches comme # 3 est le nombre, sinon la supercherie de défilement latéral des anciennes consoles, qui a fonctionné.
Patrick Hughes

1

Dessinez les objets dans l'ordre de la Yvaleur, 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 You explicitement définie, selon le jeu et les besoins) et restituer dans cet ordre.

C'est "l'algorithme du peintre" à l'œuvre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.