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?
Odpowiedzi:
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ć:
źródło
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
Gdzie, powiedzmy,
X
oznacza 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 ...)
źródło
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
źródło