W jaki sposób gra 2D, taka jak Zelda, radzi sobie z postacią stojącą za budynkami, w których pokazana jest tylko jej część?

28

Próbuję opracować prostą grę w stylu Zelda. Znalazłem ten bardzo przydatny temat

Jak LoZ: A Link to the Past poradził sobie z kolizjami pod płytkami?

którego używam jako odniesienia do opracowania mojego mechanizmu wykrywania kolizji. Jest jednak coś, czego nie zrozumiałem. Kiedy Link znajduje się za budynkami, pokazywana jest tylko jego część. Czy ktoś może pomóc mi zrozumieć, w jaki sposób można osiągnąć ten efekt? Czy budynek nie jest częścią tła?

Tinadm
źródło
Lubię myśleć o stylu renderowania jako o warstwie podłoża (trawa, płytki podłogowe itp.), Warstwie obiektu (doniczki, wrogowie, przegrody, łączniki itp.) I warstwie nieba (blaty dachowe, podnoszone donice, blaty drzew) itp.). Logika przenoszenia rzeczy między warstwami może być nieco dziwna na przykładzie doniczek, ale to inna sprawa.
Benjamin Danger Johnson

Odpowiedzi:

32

Gry 2D z kafelkami zwykle mają więcej warstw, które renderują się na różnych warstwach - niektóre renderują w tle, inne nad odtwarzaczem.

Ta część dachu renderuje się nad graczem i dlatego gracz może przejść za ten budynek.

Oto przykład obrazu z mojej gry, aby lepiej wyjaśnić: wprowadź opis zdjęcia tutaj

Blodyavenger
źródło
Więc sam budynek może być częścią tła, ale dach jest częścią innej warstwy narysowanej na warstwie za pomocą duszków?
Tinadm
2
@ Tinadm niekoniecznie musi to być cały dach, może to być tylko fragment dachu, który rysuje się na odtwarzaczu renderowanym po wszystkim innym.
Tetrad
7
+1 za niesamowitą grafikę. Naprawdę pomaga uczniom wizualnym.
UnderscoreZero
1
Jestem prawie pewien, że stare SNR JRPG używały tej samej techniki. FF2, FF5 itp. Ta technika jest nadal aktualna.
Hatoru Hansou
1
Całkiem dobrze to widać w emulatorach, np. ZSNES, które pozwalają ręcznie włączać i wyłączać poszczególne warstwy.
Tobias Kienzler
5

Podczas gdy odpowiedź Blodyavengera opisuje, w jaki sposób jest to najprawdopodobniej zrobione, oto inna możliwość, która pozwoliłaby na łatwe przełączanie perspektywy (np. Cztery lub osiem różnych kierunków lub niektóre poziomy elewacji kamery):

Zastanów się nad widokiem mapy z góry, np

  ABCDEFGHIJKL
1 +-----=----+
2 |  .    .  |
3 |    X   o |
4 | .        ||
5 |    .   . |
6 +--=-------+

Gdzie, powiedzmy, Xoznacza wysoki filar. Dla każdego obiektu przechowujesz obrazy we wszystkich możliwych perspektywach (lub korzystasz z tych samych ...), które mogą być dowolne o wiele płytek wysoko. Teraz podczas rysowania po prostu zacznij od kolumny lub wiersza, który znajduje się z tyłu w bieżącej perspektywie, np. Wiersz 1, jeśli patrzysz z południa. Następnie narysuj wiersz / kolumnę na drugim miejscu z tyłu i tak dalej. W ten sposób, gdy coś jest wyższe niż jeden kafelek (rozciągnięty do obecnej perspektywy), po prostu przesłoni to, co jest za nim.

(Przepraszam za brak ładnych zdjęć, nie jestem zbyt dobry w stosowaniu grafiki ...)

Tobias Kienzler
źródło
Zwróć uwagę, jak w ten sposób możesz łatwo zmienić wysokość kamery, rozciągając tekstury obiektu
Tobias Kienzler,
1

Powinieneś mieć zmienną głębokości i rysować najpierw obrazy o największej głębokości, a następnie inne o najniższej głębokości. Głębokość każdego obiektu powinna być równa ujemnej współrzędnej y.

Depth=-y

Ahmed Elyamani
źródło