Come gestire le porte animate in piastrelle isometriche


10

Ho un problema difficile, non sono sicuro di come affrontare al meglio: ho una tessera animata di una porta. Quando è chiuso, deve essere ordinato in un modo, ma quando è aperto dovrà essere ordinato in un modo diverso, poiché appartiene a un diverso (riquadro vicino).

Ecco la porta chiusa:

porta chiusa

e la porta si aprì:

porta aperta

Immagino che sarebbe possibile scavalcare il sistema di smistamento per tali tessere e regolare l'ordinamento in base al telaio, ma sembra un po 'confuso.

Qualcuno ha riscontrato uno scenario simile? Qualche soluzione elegante?


2
In che modo il tuo sistema di smistamento attualmente rileva l'ordine di disegno delle tessere?
Roy T.

Risposte:


4

Forse potresti far uscire una porta da due oggetti, su tessere diverse, e mostrarne solo una alla volta. In questo modo, la porta aperta potrebbe anche concepibilmente bloccare il movimento, il che sembra un po 'realistico.


4

Crea tre sprite ...

  1. Porta chiusa (come il tuo primo sprite) - blocca il movimento
  2. Solo la cornice (posta nel tuo caso) della porta, ma nessuna porta - non blocca il movimento
  3. Solo la porta in posizione aperta - blocca il movimento

Quando la porta è chiusa, pesca lo sprite 1 e trattalo come un "blocco" in modo che i giocatori non possano attraversarlo.

Quando la porta viene aperta, sostituisci quella sprite con il n. 2 (solo il palo della porta). Quindi posiziona lo sprite # 3 (solo la porta) nella cella adiacente in cui si troverebbe la porta.

Chiudere è semplicemente rimuovere la porta e sostituire il palo con palo + porta in posizione chiusa.

Con questa configurazione, non devi preoccuparti di rendere la porta aperta in un ordine speciale. Renderlo nell'ordine come qualsiasi altro oggetto nel quadrato in cui si trova.

Il rovescio della medaglia è che non puoi avere il giocatore o qualsiasi altro oggetto nel quadrato dove andrà la porta aperta.


3

Ci sono 2 trucchi che uso per l'ordinamento in 2D:

  • Aggiungi la posizione del suolo agli sprite, questo è un punto in cui lo sprite tocca il suolo (ad esempio piedi degli uomini, tronco d'albero, cornice delle porte) e ordina in base a esso invece degli sprite pixel. In questo modo lo sprite non sarà influenzato dall'animazione

  • Aggiungi bambini non ordinabili agli oggetti (ad esempio, gli uomini possono avere diversi bambini che non influiscono sull'ordinamento: mantello, arco, spada, ecc., Il telaio della porta ha la porta del bambino). In questo modo l'animazione degli sprite figlio non influisce neanche sull'ordinamento.


1

Il modo migliore per risolvere l'ordinamento degli oggetti è non ordinare affatto. Se si utilizza un buffer di profondità, è possibile eseguire il rendering di tutto in un passaggio. Gli oggetti con un valore z più alto saranno più lontani rispetto agli oggetti con un valore z più basso.

Anche se il tuo gioco è in 2D, dovresti comunque prendere in considerazione l'uso delle coordinate 3D con un buffer di profondità, altrimenti ti divertirai per sempre con l'algoritmo del pittore .


Vero, ma come determinare la posizione Z? Solo ordinando
Kromster il

Sì, ma ora l'ordinamento avviene offline, anziché durante il rendering. Ora il progettista di livelli può costruire il livello tenendo presente i valori Z, senza doversi preoccupare degli oggetti ritagliati.
knight666,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.