Wallconstructor - створення стін на ходу - unity 3d

У нашому проекті ми продовжуємо серію вже існуючої гри, але переводимо світ з ізометрії в 3D. Ось приклад "шматка" однією з локацій.

Для початку скачайте архів, прикладений тут. Відкрийте і закиньте вміст в папку Assets вашого проекту.
У вашому проекті після рекомпіла з'явиться пункт меню "GameObject / Create Advanced / Wall Constructor".

Натисніть його, і приступимо.
На сцені створився новий ігровий об'єкт "Wall". У інспектора у цього об'єкта є кілька властивостей, які відповідають за параметри стіни в цілому. Налаштуйте їх на свій розсуд.
В принципі, як тільки ви поставили об'єкт у вас вже майже все заповнено для тестування. Потрібно тільки самому вибрати матеріали для стіни.

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

Зверніть увагу - всередині нашого об'єкта "Wall" є ще два об'єкти, пронумеровані як 1 і 2.

Виберіть об'єкт 2 - він вважається кінцем стіни.

Посуньте його куди захочете. Власне ось наша стіна і розтягнулася.

При виборі цієї другої точки - в інспектора з'являється кнопка "Продовжити стіну". Натисніть на неї і створиться ще одна точка.

Тепер перейдіть назад на точку "2". Дана точка тепер не знаходиться скраю і може бути використана як центр кривої. Натисніть кнопку "Зробити центром кривої" в інспектора. Після натискання ваша стіна перетвориться в криву.

Тепер поверніться на точку 3.
Припустимо, що вам потрібно змінити висоту стіни в даній точці.
Подкрутите трохи повзунок "Зсув висоти" вгору або вниз і стіна деформується.

Після того як ви закінчили генерацію заважав, натисніть назад на об'єкт Wall і натисніть "Закінчити редагування".
Тепер натисніть "Видалити компонент". Як ви бачите всі вкладені об'єкти були видалені, з'явилося два компонента - MeshRenderer і MeshFilter, а наш компонент був видалений.

Новий об'єкт створюється через пункт меню "GameObject / Create Advanced / Wall Constructor".

Різні точки в генераторі мають різну специфіку. Порядок точок точно такий же як відображається в ієрархії.
Отже:
  • перша точка - не може бути перетворена - ви можете тільки рухати її
  • з останньої точки ви можете створювати "продовження"
  • проміжні точки ви можете перетворити в точки кривих, але дві точки кривих не можуть йти підряд

Настійно не раджу змінювати імена точок, так як ім'я останньої точки перекладається в число, для того щоб нова точка була наступною в ієрархії.

Точки мають поле "Висота зміщення", яке впливає на те, наскільки зміщується висота щодо загальної величини, про яку йдеться в самому компоненті-генераторі.

Сам генератор має наступні поля:
  • Висота - впливає на висоту стіни, що логічно. Ця величина складається зі зміщенням у точки і утворюється фінальна висота. Не раджу виставляти поля так, щоб в сумі вони давали мінус.
  • товщина
  • Розмір розгортки - якщо текстуру потрібно пропорційно збільшити в розмірі
  • матеріал збоку
  • Матеріал зверху - верхня частина заважав трохи відрізняється по малюнку з усією іншою частиною стіни, тому тут текстура вказується окремо
  • Згладжування кривих - вказує через скільки Unity-одиниць в кривих повинен створюватися новий полігон. Дуже не рекомендую занадто зменшувати цей параметр - викличе це дикі лаги. Та й в суті така точність не потрібна.

Перед тим як змінювати точки включите генератор кнопкою "Почати редагування". Коли ви закінчуєте з редагуванням ОБОВ'ЯЗКОВО відключіть редагування по кнопці - кожен кадр меш генерується заново, поки ви не зробите цього. Дана фіча була зроблена виключно для зручності, але доставляє ось такий казус - не варто про неї забувати і відключати коли ви їй не користуєтеся.
Якщо при збереженні вашої локації на ній залишається значок зірочки після імені - подивіться уважно, можливо ви забули вимкнути генерацію.

Коли ви остаточно згенерували меш - видаліть компонент-генератор по відповідній кнопці. ОБОВ'ЯЗКОВО видаляйте його кнопкою, а не вручну - він автоматично робить додаткову роботу з видалення дочірніх об'єктів і відображенню прихованих компонентів.