У нашому проекті ми продовжуємо серію вже існуючої гри, але переводимо світ з ізометрії в 3D. Ось приклад "шматка" однією з локацій.
Для початку скачайте архів, прикладений тут. Відкрийте і закиньте вміст в папку Assets вашого проекту.
У вашому проекті після рекомпіла з'явиться пункт меню "GameObject / Create Advanced / Wall Constructor".
Натисніть його, і приступимо.
На сцені створився новий ігровий об'єкт "Wall". У інспектора у цього об'єкта є кілька властивостей, які відповідають за параметри стіни в цілому. Налаштуйте їх на свій розсуд.
В принципі, як тільки ви поставили об'єкт у вас вже майже все заповнено для тестування. Потрібно тільки самому вибрати матеріали для стіни.
Після того, як ви все встановили натисніть кнопку "Почати редагування".
Зверніть увагу - всередині нашого об'єкта "Wall" є ще два об'єкти, пронумеровані як 1 і 2.
Виберіть об'єкт 2 - він вважається кінцем стіни.
Посуньте його куди захочете. Власне ось наша стіна і розтягнулася.
При виборі цієї другої точки - в інспектора з'являється кнопка "Продовжити стіну". Натисніть на неї і створиться ще одна точка.
Тепер перейдіть назад на точку "2". Дана точка тепер не знаходиться скраю і може бути використана як центр кривої. Натисніть кнопку "Зробити центром кривої" в інспектора. Після натискання ваша стіна перетвориться в криву.
Тепер поверніться на точку 3.
Припустимо, що вам потрібно змінити висоту стіни в даній точці.
Подкрутите трохи повзунок "Зсув висоти" вгору або вниз і стіна деформується.
Після того як ви закінчили генерацію заважав, натисніть назад на об'єкт Wall і натисніть "Закінчити редагування".
Тепер натисніть "Видалити компонент". Як ви бачите всі вкладені об'єкти були видалені, з'явилося два компонента - MeshRenderer і MeshFilter, а наш компонент був видалений.
Новий об'єкт створюється через пункт меню "GameObject / Create Advanced / Wall Constructor".
Різні точки в генераторі мають різну специфіку. Порядок точок точно такий же як відображається в ієрархії.Отже:
- перша точка - не може бути перетворена - ви можете тільки рухати її
- з останньої точки ви можете створювати "продовження"
- проміжні точки ви можете перетворити в точки кривих, але дві точки кривих не можуть йти підряд
Настійно не раджу змінювати імена точок, так як ім'я останньої точки перекладається в число, для того щоб нова точка була наступною в ієрархії.
Точки мають поле "Висота зміщення", яке впливає на те, наскільки зміщується висота щодо загальної величини, про яку йдеться в самому компоненті-генераторі.
Сам генератор має наступні поля:- Висота - впливає на висоту стіни, що логічно. Ця величина складається зі зміщенням у точки і утворюється фінальна висота. Не раджу виставляти поля так, щоб в сумі вони давали мінус.
- товщина
- Розмір розгортки - якщо текстуру потрібно пропорційно збільшити в розмірі
- матеріал збоку
- Матеріал зверху - верхня частина заважав трохи відрізняється по малюнку з усією іншою частиною стіни, тому тут текстура вказується окремо
- Згладжування кривих - вказує через скільки Unity-одиниць в кривих повинен створюватися новий полігон. Дуже не рекомендую занадто зменшувати цей параметр - викличе це дикі лаги. Та й в суті така точність не потрібна.
Перед тим як змінювати точки включите генератор кнопкою "Почати редагування". Коли ви закінчуєте з редагуванням ОБОВ'ЯЗКОВО відключіть редагування по кнопці - кожен кадр меш генерується заново, поки ви не зробите цього. Дана фіча була зроблена виключно для зручності, але доставляє ось такий казус - не варто про неї забувати і відключати коли ви їй не користуєтеся.
Якщо при збереженні вашої локації на ній залишається значок зірочки після імені - подивіться уважно, можливо ви забули вимкнути генерацію.
Коли ви остаточно згенерували меш - видаліть компонент-генератор по відповідній кнопці. ОБОВ'ЯЗКОВО видаляйте його кнопкою, а не вручну - він автоматично робить додаткову роботу з видалення дочірніх об'єктів і відображенню прихованих компонентів.