Jak radzić sobie z animowanymi drzwiami w kafelkach izometrycznych

10

Mam podchwytliwy problem Nie jestem pewien, jak sobie z tym poradzić najlepiej: mam animowaną płytkę drzwi. Po zamknięciu należy go posortować w jedną stronę, ale po otwarciu należy go posortować w inny sposób, ponieważ należy do innego (sąsiadującego kafelka).

Oto drzwi zamknięte:

drzwi zamknięte

i drzwi się otworzyły:

drzwi się otworzyły

Wyobrażam sobie, że można zastąpić system sortowania takich kafelków i dostosować sortowanie na podstawie ramki, ale wydaje się to nieco pospolite.

Czy ktoś napotkał podobny scenariusz? Jakieś eleganckie rozwiązania?

George Profenza
źródło
2
W jaki sposób Twój system sortowania wykrywa obecnie kolejność rysowania płytek?
Roy T.

Odpowiedzi:

4

Może mógłbyś zrobić drzwi z dwóch przedmiotów, na różnych kafelkach i pokazać tylko jeden z nich na raz. W ten sposób otwarte drzwi mogą również blokować ruch, co wydaje się trochę realistyczne.

Nieważne
źródło
4

Utwórz trzy duszki ...

  1. Drzwi zamknięte (jak twój pierwszy duszek) - blokuje ruch
  2. Tylko rama (słupek w twoim przypadku) drzwi, ale żadnych drzwi - nie blokuje ruchu
  3. Tylko drzwi w pozycji otwartej - blokują ruch

Kiedy drzwi są zamknięte, dobierz duszka 1 i potraktuj go jako „bloker”, aby gracze nie mogli przez niego przejść.

Po otwarciu drzwi zastąp duszka nr 2 (tylko słupkiem drzwi). Następnie umieść duszka # 3 (tylko drzwi) w sąsiedniej celi, w której będą drzwi.

Zamykanie to po prostu usunięcie drzwi i zastąpienie słupka słupkiem + drzwi w pozycji zamkniętej.

Dzięki tej konfiguracji nie musisz się martwić o renderowanie otwartych drzwi w specjalnej kolejności. Po prostu renderuj w kolejności, jak każdy inny obiekt na kwadracie, w którym się znajduje.

Minusem jest to, że nie możesz mieć gracza ani żadnego innego przedmiotu na polu, do którego pójdą otwarte drzwi.

Tim Holt
źródło
3

Są dwa triki, których używam do sortowania w 2D:

  • Dodaj pozycję ziemi do duszków, jest to punkt, w którym duszek dotyka ziemi (np. Męskie stopy, pień drzewa, rama drzwi) i sortuje według niej zamiast pikseli duszków. W ten sposób animacja nie wpłynie na duszka

  • Dodaj do obiektów nieposortowane dzieci (np. Mężczyźni mogą mieć kilka dzieci, które nie wpływają na sortowanie - płaszcz, łuk, miecz itp., Ościeżnica ma drzwi dziecięce). W ten sposób animacja dziecięcych duszków również nie wpływa na sortowanie.

Kromster
źródło
1

Najlepszym sposobem rozwiązania problemu sortowania obiektów jest całkowite nie sortowanie. Jeśli używasz bufora głębokości, możesz renderować wszystko w jednym przejściu. Obiekty o wyższej wartości Z będą dalej niż obiekty o niższej wartości Z.

Nawet jeśli twoja gra jest 2D, powinieneś rozważyć użycie współrzędnych 3D z buforem głębokości, w przeciwnym razie na zawsze będziesz tango z algorytmem malarza .

knight666
źródło
To prawda, ale jak ustalić pozycję Z? Tylko sortując
Kromster
Tak, ale sortowanie odbywa się teraz offline, a nie podczas renderowania. Teraz projektant poziomów może budować poziom z uwzględnieniem wartości Z, bez martwienia się o obcinanie obiektów.
knight666