Найти в Дзене
Игровая ниша

Как добавить глубины в 2D игру?

В 2D играх хоть и нету третьего измерения, но располагать предметы на разном расстоянии от камеры всё же хочется. Для этого используют разные подходы. Например в чисто 2D игровых движках можно задавать порядок, в котором будут отрисовываться объекты. В движка поддерживающих третье измерения, а именно ось Z, появляется возможность располагать объекты с различными значениями z-координаты. В статье же разберём подход, позволяющий просто реализовать глубину за счёт z-координаты. Например у нас есть персонаж и облако. Если мы хотим расположить персонажа ближе а облако за ним, то просто задаём z-координату для персонажа больше чем у облака. Если же хотим наоборот, то задаём z-координату для персонажа меньше чем у облака. Стоит добавить, что z-координата в данном случае смотрит прямо в камеру. C помощью такого подхода достаточно просто задать иллюзию глубины. Грубо говоря, в играх редко приходится прятаться за облаками, но зато часто приходится скрываться за препятствиями или даже другими пе
Оглавление

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

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

В движка поддерживающих третье измерения, а именно ось Z, появляется возможность располагать объекты с различными значениями z-координаты.

В статье же разберём подход, позволяющий просто реализовать глубину за счёт z-координаты.

Описание подхода

Например у нас есть персонаж и облако. Если мы хотим расположить персонажа ближе а облако за ним, то просто задаём z-координату для персонажа больше чем у облака.

Z_персонажа > Z_облака
Z_персонажа > Z_облака

Если же хотим наоборот, то задаём z-координату для персонажа меньше чем у облака.

Z_персонажа < Z_облака
Z_персонажа < Z_облака

Стоит добавить, что z-координата в данном случае смотрит прямо в камеру.

C помощью такого подхода достаточно просто задать иллюзию глубины.

Применение на практике

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

Z_нижнего_персонажа_ >  Z_верхнего_персонажа
Z_нижнего_персонажа_ > Z_верхнего_персонажа

Это просто реализуется в коде

-4

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

Так как в играх в основном несколько планов, то не всегда удобно задавать прямую зависимость z-координаты от y-координаты, т.к. это может привести к тому, что объект вообще пропадёт из поля зрения камеры (камеры в движках имеют ограниченную дальность). Лучше ограничивать z-координату.

Сделать это достаточно просто. Достаточно поделить y-координату на заранее заданную константу, в пределах которой может быть y-координата. Например на вертикальное разрешение экрана.

-5

Тогда у нас z-координата будет задана от 0 и до -1.

Заключение

В статье рассмотрен достаточно простой способ реализации глубины в 2D мире, но в тоже время и достаточно надёжный.

Так же данный способ не ресурсозатратный, что часто важно для 2D игр.