Как 2D-игра, подобная Zelda, справляется с персонажем, находящимся за зданиями, где показана только его часть?

28

Я пытаюсь разработать простую игру в стиле Zelda. Я нашел эту очень полезную тему

Как LoZ: Ссылка на Прошлое обрабатывает столкновения суб-плитки?

что я использую в качестве ссылки для разработки моего механизма обнаружения столкновений. Однако есть кое-что, чего я не смог понять. Когда Линк находится позади зданий, отображается только его часть. Может ли кто-нибудь помочь мне понять, как этот эффект может быть достигнут? Разве здание не является частью фона?

Tinadm
источник
Мне нравится думать о стиле рендеринга, как о том, что у него есть слой земли (трава, плитка и т. Д.), Слой объектов (горшки, враги, шурбы, линки и т. Д.) И слой неба (крыши, поднятые горшки, вершины деревьев). , так далее). Логика перемещения вещей между слоями может быть немного странной на примере горшков, но это другой вопрос.
Бенджамин Дэнджер Джонсон

Ответы:

32

2D-мозаичные игры обычно имеют больше слоев, которые отображаются в разных слоях - некоторые отображаются на заднем плане, другие над игроком.

Эта часть крыши находится над игроком, и поэтому игрок может пройти за этим зданием.

Вот пример изображения из моей игры, чтобы объяснить лучше: введите описание изображения здесь

Blodyavenger
источник
То есть само здание может быть частью фона, но крыша является частью другого слоя, нарисованного поверх слоя со спрайтами?
Tinadm
2
@Tinadm это не обязательно должна быть целая крыша, это может быть просто часть крыши, которая будет рисоваться поверх плеера, который отображается после всего остального.
Тетрад
7
+1 за отличную графику. Действительно помогает визуальным ученикам.
UnderscoreZero
1
Я уверен, что старые SNP JRPG использовали ту же технику. FF2, FF5 и т. Д. Техника все еще действует.
Hatoru Hansou
1
Это хорошо видно на эмуляторах, например, ZSNES, которые позволяют вручную включать и выключать отдельные слои.
Тобиас Кинцлер
5

В то время как ответ Blodyavenger покрывает, как это наиболее вероятно, вот еще одна возможность, которая позволила бы легко переключать перспективу (например, четыре или восемь различных направлений, или некоторые уровни высоты камеры):

Рассмотрите вид сверху вашей карты, например,

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

Где, скажем, Xотмечается высокий столб. Для каждого объекта вы сохраняете изображения всех возможных перспектив (или используете одно и то же ...), высота которых может быть произвольно много плиток. Теперь при рисовании просто начните со столбца или строки, которые находятся сзади в текущей перспективе, например, строка 1, если смотреть с юга. После этого нарисуйте строку / столбец вторым по направлению к спине и так далее. Таким образом, когда что-то выше, чем одна плитка (растянутая на текущую перспективу), она просто переопределит то, что находится позади.

(Извините за отсутствие красивых картинок, я не слишком хорош в прикладной графике ...)

Тобиас Кинцлер
источник
Обратите внимание, как вы можете легко изменить высоту камеры таким образом, растягивая текстуры объектов
Тобиас Кинцлер,
1

У вас должна быть переменная для глубины, и сначала должны быть нарисованы изображения с самой большой глубиной, а затем другие с самой низкой глубиной. И глубина каждого объекта должна быть равна отрицательной его координате y.

Depth=-y

Ахмед Эльямани
источник