Unity: работа с Terrain

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com (подробнее »)
| Компьютерные и мобильные игры
Предисловие

Привет, народец! Меня всё-таки попросили написать отдельную статью, как работать с Terrain и создать локацию. Предыдущие статьи Вы можете обнаружить по ссылкам:

  1. Как создать игру, ничего не умея. Часть первая: модели и анимации
  2. Как создать игру, ничего не умея. Часть вторая: сцена (уровень), квесты, интерактивные объекты
Terrain

Пойдем мы с вами по протоптанной дорожке, создадим Scene, а в ней GameObject -> 3D Object -> Terrain и выставим значения Terrain Width(Length, Height) 100-100-120. И перед нами появляется серый квадрат!

Отлично, половина работы сделана. Давайте придадим некие очертания нашему квадрату, а именно, создадим горы у краёв Terrain. Для этого переходим в Inspector и находим кисточку Paint Terrain, в ней выбираем графу Raise or Lower Terrain.

После выбираем подходящую кисть, размер(Brush size) и Opacity(силу воздействия). Я выбрал параметры 7 и 10. Начинаем водить нашей кистью по краям Terrain и получаем горы по краям, если Вы всё сделали правильно, у Вас должно получиться что-то подобное.

После я возьму другую кисть (тут уже на ваш выбор), выставлю Opacity на 3 и начну водить ей по ровным поверхностям что бы создать эффект российских ровных дорог =). Получилось вот так.

Мне кажется, я объяснил, как пользоваться кистями. Поигравшись с настройками, вы вполне сможете создать от пустыни до тропиков, всё зависит от фантазии, единственное что еще скажу, если вы ходите сделать возвышенность меньше, то просто зажмите клавишу Shift, от этого будет обратный эффект. Сейчас же не будем на этом зацикливаться и двинемся дальше.

 Текстуры

После всех манипуляций у меня появился серый квадрат с непонятными выпуклостями, нужно придать ему немного жизни.И снова тут несколько вариантов:

  1. Нарисовать текстуры самому (если умеем)
  2. Купить готовые в Asset Store
  3. Скачать бесплатный пак стандартных асетов (это мы и сделаем)

Идём в Asset Store и вводим в поисковике standard assets, он сразу же нам выдаст необходимый пак. Скачиваем, интегрируем, радуемся =).

Снова нажимаем на кисточку в Inspector Terrain и выбираем строку Paint Textures. Ниже видим строку Edit Terrain Layers, выбираем Create Layer. В появившемся окне я нахожу текстуру травы(GraceHillAlbedo) применяю и вижу, что моя серая постройка стала зеленой.

Добавляем очередную текстуру, у меня это CliffAlbedoSpecular, её я буду использовать для разрисовки гор, негоже что бы всё было одного цвета. Выбираю кисть, размер, и текстуру гор, начинаю рисовать.

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

Получился конечно не шедевр, но у меня нет желание тратить на это больше 5 минут =). А теперь, для Зеленых, посадим несколько деревьев! Выбираем Paint Trees рядом с кистью, нажимаем Edit Trees и выбираем Add Tree. Нажимаем на кружочек в поле Tree Prefab и выбираем дерево которое нам понравилось. В паке оказалось всего три дерева, и я решил добавить их все. Поставив первое дерево, я обнаружил что оно слишком уж большое, поэтому перетаскиваем бегунок Tree Height влево до нужного нам размера и начинаем посадку деревьев.

Партия зеленых может спать спокойно! Проделываем похожую процедуру с травой. Для тех, кто не нашел, куда же добавлять текстуру травы, ищем строчку Details в ней Edit Details -> Add Grass Texture. В строке Detail Texture нажимаем на кружок и добавляем траву, у меня это GrassFrond02AlbedoAlpha. Обратите внимание на две полоски с цветом, они отображают, какой цвет будет у травы в живом и сухом виде, а когда мы добавляем траву в сцену, бегунками можно настроить сколько будет мертвой травы, а сколько живой, это покажет мир более живым. Дальше играем с бегунками Setting и выставляем значение подходящие Вам.

Наша местность всё живее и живее! Но всё еще чего-то не хватает. Точно! Нам не хватает неба, давайте добавим небо! Иду в ассет стор, в поисковике вбиваю Sky Free и первое что мне выдает это Sky5x, скачиваю и добавляю в проект. Далее нажимаем на Window -> Rendering ->Lighting Setting, находим строчку Skybox Material нажимаем на кружок и выбираем понравившееся Вам небо,  я выбрал небо с облаками.

Получилось довольно неплохо для проекта, собранного на скорую руку.

Если посмотреть на игровую сторону, то мы имеем покачивающиеся деревья и траву на ветру. Не поленитесь потратить  достаточно времени, на создание локации и она Вам будет приносить только удовольствие.

Заключение

Создание локации — довольно сложный и очень трудозатратное удовольствие, вам нужно сразу понимать что вы будете создавать, чтобы в дальнейшем не пришлось всё делать заново. А в данной статье я рассказал основы, как пользовать кистями для изменения Terrain. Надеюсь, вам это было полезно. А мы с вами встретимся уже в следующей статье по созданию игры, используя только интернет!

9 комментариев

182749768@vkontakte
Коротко и понятно. Люблю такое читать. У меня вопрос, как насчет UE4? Тоже хороший движок, может стоит хоть немного сравнить разработку на этих движках. Но если нет, так нет.
nonp
Хорошо, как закончу с проектом на Unity, возьмусь за серию статей на UE.
182749768@vkontakte

Ответ nonp на комментарий
Хорошо, как закончу с проектом на Unity, возьмусь за серию статей на UE.


Жду с нетерпением. Подписался.
114808253857932665800@google
Терейн в юнити гавно как и само юнити, покупайте получше компы и учите анриал.
nonp
Это исключительно Ваше мнение.
114808253857932665800@google
Я бывший юнити разработчик (4 года), сейчас анриал. Верь мне — юнити шлак, рад что вылез с этого забаганого «навоза» с кривыми пайплайнами и ущербной средой разработки… как страшный сон забыл.
nonp
Я повторюсь, это Ваше мнение.Моё же, любой движок имея понимание как он работает можно привести к нужным Вам результатам. Я так же работаю на UE и не вижу в них особой разницы.
П.С: Не работаю над ААА проектами, возможно поэтому и не встречалось мне больших отличий в производительности.
114808253857932665800@google
К примеру перечислю быстрые фичи среды разработки unreal чего нет в unity:
1) Качество света, он мягкий и секси… Сделать такой в юньке это танец с бубном на неделю беременного вождя апачи… и то, до первого апдейта.
2) мало кто сейчас использует террейн в его чистом виде и на юньке я делал красоту с помощью микросплата и прочих бубнов… Вот скрин:
https://drive.google.com/file/d/1yPVoMtHoY1tTpuSa8z-Du4zVQUDcd6yX/view?usp=drivesdk
Но, на unreal это работает с коробки без прочих усилий.
3) Теперь AI and pathfinding… Ну тут вообще лучше не вспоминать юнити.
4) шейдера… Вот тут реально надо быть или слепым или тупым я хз… Чтоб говорить что они на юньке такие же и разницу не видеть…
Я понимаю что логику одинаково можно закодить что на шарпе что на спп, всегда останусь при мнении что юнити движок для бедных что не могут комп прочитать под анриал… у меня самого компиляция шейдеров на анриале вызывает боль и нервный тик но оно того стоит.
Последний раз редактировалось

Добавить комментарий