Создание механики подводного плавания в 2D-игре — краткий туториал

Это подходит и для некоторых механик, задействующих третье измерение.

Инди-разработчица Хульда Гнодима в марте 2020 года опубликовала на Reddit небольшую историю о том, как она реализовала механику ныряния под воду в своей двумерной игре Vulpion. Этот туториал поможет всем, кто хочет добавить механики, задействующие третье измерение, в свою 2D-игру. Мы выбрали из публикации главное.

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

Разработчица не смогла найти туториалы, которые помогли бы ей реализовать механику ныряния, поэтому ей потребовалось достаточно много времени, чтобы придумать решение самостоятельно. Чтобы помочь людям, которые столкнулись с такими же проблемами, она опубликовала этот туториал.

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

Карта глубины
Карта глубины

Затем нужно поместить эту карту позади 2D-мира так, чтобы она попадала на нужные места.

Светлые зоны на карте глубины совпадают с зонами, где находится вода в игровом мире
Светлые зоны на карте глубины совпадают с зонами, где находится вода в игровом мире
Карта глубины находится сзади игрового мира
Карта глубины находится сзади игрового мира

Затем нужно добавить особый скрипт, написание которого и заняло больше всего времени у разработчицы. Именно он и позволяет персонажу заходить в воду. Этот скрипт стреляет невидимым лучом позади игровой карты, чтобы определить, попадает ли он в текстуру. Если попадает, то проверяет цвет пикселя: у чисто чёрного значение «0», у чисто белого — «1». Соответственно, у всех промежуточных вариантов есть свои значения. Цветовое значение определяет, насколько сильно персонаж сдвигается вниз — самостоятельно игрок не может совершить такое действие.

После этого нужно прикрепить к герою маску — персонаж виден только тогда, когда находится внутри маски. Когда скрипт толкает игрока вниз, он постепенно начинает исчезать — сначала ноги, а потом и тело с руками. Именно так достигается эффект медленного погружения. При полном погружении исчезает и голова.

Так выглядит маска
Так выглядит маска

Для самого погружения и плавания Гнодима сделала отдельные анимации. Также она создала невидимую подводную среду, которая появляется только в том случае, если герой полностью погружается в воду.

Когда игрок находится в достаточно глубокой воде (если значение больше 0,3), у пользователя появляется возможность погрузиться в воду, нажав на «E». Когда пользователь нажимает на кнопку, включается анимация плавания вместо анимации ходьбы и вокруг игрока включается маска, которая делает подводную среду видимой.

Если игрок хочет всплыть на поверхность, он снова нажимает «Е», и маска выключается, а подводный мир становится невидимым. Тогда же возвращается анимация ходьбы.

134134
8 комментариев

Комментарий недоступен

2
Ответить

Арт приятно выглядит

1
Ответить

кстати, разработчица недавно опубликовала постмортем, в котором рассказала, что выход её игры остался совершенно незамеченным. Вероятно, своим постом она всё же привлекла внимание к игре :)

https://www.reddit.com/r/gamedev/comments/lhtof9/for_the_first_time_i_finished_making_a_complete/

1
Ответить

Графен - красота, лучи добра художнику и аниматору! Статья полезная.

1
Ответить

такое же в crash bandicoot на псп было?

Ответить

В Дум 2д было подводное плавание

Ответить

Он же с видом сбоку.

Ответить