Введение

Помню, как в детстве с интересом смотрел на реализованную одним ютубером (Tooner) подвеску танка, PIP-прицел (Picture-In-Picture), эффекты светошумовых гранат и тому подобное. Сами видео были сырыми и неотшлифованными, наверное поэтому просмотров у них было немного, но содержание было действительно увлекательным.

Со временем, когда появилось свободное время, я вспомнил об этом ютьюбере. Мне захотелось создать что-то на компьютере, и, пересматривая одно за другим его видео, я тоже захотел сделать нечто подобное. Взяв этого ютьюбера за образец, я за две недели, используя Blender и Unity, создал свой первый майлстоун.

Blender

lavad-modeling

Сначала я думал, что же сделать, и остановился на бронированной машине LAV-AD. Просто эта машина выглядела круто, а её геометричный корпус, как мне показалось, было бы не так сложно смоделировать.

Конечно, поначалу я думал скачать бесплатную модель из интернета, но большинство из них продавались, к тому же мне давно хотелось попробовать Blender, так что я решил сделать всё сам.

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

Я заметил, что многие создают модели, опираясь на ортогональные проекции по трём осям X, Y, Z, и тоже начал собирать соответствующие материалы через Google. Так началась работа над моей первой моделью. Были трудности, но процесс оказался довольно структурированным, так что я быстро освоился и смог сделать модель, которая, на мой взгляд, выглядела неплохо.

Unity

lavad-coding

Следующим этапом было программирование, и тут я тоже использовал Unity, который давно хотел освоить. Оглядываясь назад, кажется, что я работал на ощупь, не зная, что и как применять, и делал всё с большим трудом.

У меня не было базовых знаний об объектно-ориентированном или компонентно-ориентированном проектировании, поэтому я опирался на блоги, лекции индийских ютуберов и старые обсуждения на Stack Overflow.

Особенно сложно было с колёсами — я использовал компонент Wheel Collider, но информации о нём на корейском было крайне мало. Впервые обратился к официальной документации Unity, но из-за недостаточного понимания самого компонента ушло много времени на его правильное применение.

Но когда колёса наконец заработали и начали крутиться, я испытал невероятное воодушевление. Думаю, именно с этого момента Unity меня по-настоящему увлёк.

Исправление багов и завершение

lavad-bug1
lavad-bug2
lavad-bug3
lavad-bug4

Было много забавных багов. Например, когда я ещё не знал о Wheel Collider и пытался реализовать движение машины с помощью тригонометрических функций, всё работало совершенно неправильно. Даже после применения Wheel Collider ось колёс оказалась смещённой, и они крутились не в ту сторону. А когда я применил новую смоделированную модель кузова, возникли проблемы с массой. При реализации эффекта выброса гильз их вываливалось слишком много, и так далее.

Помимо этого, было много других багов и частых синтаксических ошибок вроде пропущенных точек с запятой или скобок, что поначалу вызывало растерянность. Особенно тяжело стало при работе с Wheel Collider.

lavad-main

lavad-main2

Несмотря на это, после девяти сборок я довёл проект до уровня, которым был доволен. Я добавил в него много личных предпочтений и пожеланий: применил пост-обработку камеры для эффекта глубины резкости, реализовал выброс пыли из-под задних колёс при движении вперёд и назад (причём при движении назад ярко загораются стоп-сигналы), и завершил проект с удовольствием, прорабатывая эти детали.

Заключение

lavad-working2

Более подробно можно ознакомиться на GitHub!

Проект длился 17 дней — начат 8 июля, последняя сборка 25 июля. Лично я, завершая последнюю сборку, подумал, что в следующий раз хотел бы взяться за проект побольше. Но есть и сожаление: из-за недостаточного понимания C# я, кажется, злоупотреблял кодом, нацеленным исключительно на достижение цели.

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