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:
i 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?
Odpowiedzi:
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.
źródło
Utwórz trzy duszki ...
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.
źródło
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.
źródło
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 .
źródło