Comment gérer les portes animées dans les carreaux isométriques


10

J'ai un problème délicat, je ne sais pas comment y faire face au mieux: j'ai une tuile animée d'une porte. Lorsqu'il est fermé, il doit être trié dans un sens, mais lorsqu'il est ouvert, il devra être trié d'une manière différente, car il appartient à une autre (tuile voisine).

Voici la porte fermée:

porte fermée

et la porte s'ouvrit:

porte ouverte

J'imagine qu'il serait possible de remplacer le système de tri pour de telles tuiles et d'ajuster le tri en fonction du cadre, mais cela semble un peu hacky.

Quelqu'un a-t-il rencontré un scénario similaire? Des solutions élégantes?


2
Comment votre système de tri détecte-t-il actuellement l'ordre de tirage des tuiles?
Roy T.

Réponses:


4

Peut-être pourriez-vous faire une porte avec deux objets, sur des tuiles différentes, et n'en montrer qu'un seul à la fois. De cette façon, une porte ouverte pourrait également bloquer le mouvement, ce qui semble un peu réaliste.


4

Créez trois sprites ...

  1. Porte fermée (comme votre premier sprite) - bloque le mouvement
  2. Juste le cadre (poste dans votre cas) de la porte, mais pas de porte - ne bloque pas le mouvement
  3. Juste la porte en position ouverte - bloque le mouvement

Lorsque la porte est fermée, dessinez l'image-objet 1 et traitez-la comme un "bloqueur" afin que les joueurs ne puissent pas la traverser.

Lorsque la porte est ouverte, remplacez ce sprite par # 2 (juste le montant de la porte). Ensuite, placez l'image-objet n ° 3 (juste la porte) dans la cellule adjacente dans laquelle la porte se trouverait.

Fermer, c'est simplement retirer la porte et remplacer le poteau par poteau + porte en position fermée.

Avec cette configuration, vous n'avez pas à vous soucier de rendre la porte ouverte dans un ordre spécial. Rendez-le simplement dans l'ordre comme tout autre objet dans le carré où il se trouve.

L'inconvénient est que vous ne pouvez pas avoir le joueur ou tout autre objet sur la place où ira la porte ouverte.


3

Il y a 2 astuces que j'utilise pour trier en 2D:

  • Ajoutez la position au sol aux sprites, c'est un point où les sprites touchent le sol (par exemple les pieds des hommes, le tronc des arbres, le cadre des portes) et les trient à la place des pixels des sprites. De cette façon, le sprite ne sera pas affecté par l'animation

  • Ajoutez des enfants non triables aux objets (par exemple, les hommes peuvent avoir plusieurs enfants qui n'affectent pas le tri - cape, arc, épée, etc., le cadre de la porte a une porte d'enfant). De cette façon, l'animation des sprites enfants n'affecte pas non plus le tri.


1

La meilleure façon de résoudre le tri des objets est de ne pas trier du tout. Si vous utilisez un tampon de profondeur, vous pouvez tout rendre en un seul passage. Les objets ayant une valeur z supérieure seront plus éloignés que les objets ayant une valeur z inférieure.

Même si votre jeu est en 2D, vous devriez toujours envisager d'utiliser des coordonnées 3D avec un tampon de profondeur, sinon vous allez toujours tanguer avec l'algorithme du peintre .


Certes, mais comment déterminer la position Z? Uniquement par tri
Kromster

Oui, mais ce tri s'effectue désormais hors ligne, au lieu du rendu. Désormais, le concepteur de niveaux peut créer le niveau en tenant compte des valeurs Z, sans avoir à se soucier de découper des objets.
knight666
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.