Зразок Кімнат і Порталів

Завантажте цей навчальний проект: Простий Зразок Порталів .

Вступ

Цей урок познайомить вас зі створенням системи кімнат "Hello World" з двома кімнатами та порталом між ними.

Крок 1

../../../_images/tutorial_simple_1.png
  • Створіть новий проект.

  • Додайте вузол Spatial (Просторовий), як корінь сцени (на скріншоті він називається "Root" (Корінь)).

  • Далі додайте вузол RoomManager (Керівник кімнат). Нам знадобиться він пізніше, щоб обробити систему приміщень.

  • Далі ми повинні почати визначати наші кімнати. Ми створюємо всі наші кімнати під іншим просторовим вузлом, який назвемо "RoomList" (Список кімнат).

  • Додайте в список кімнат вузол Room (Кімната).

  • Ми назвали кімнату Kitchen (Кухня).

  • Тепер ми створимо геометрію нашої кімнати. Імена, які ви даєте геометрії, залежить від вас.

  • Створіть MeshInstance (Екземпляр Меша) для підлоги. Створіть коробку, додавши ресурс CubeMesh в MeshInstance. Масштабуйте і розташуйте його так, щоб утворилася підлога.

  • Створіть екземпляри мешів для стін. Створіть для цього більше коробчастих мешів, а потім масштабуйте та розташуйте їх. Обов'язково залиште отвір з одного боку. Для цього потрібно буде створити два сегменти стіни.

Крок 2

../../../_images/tutorial_simple_2.png
  • Тепер нам потрібно створити іншу кімнату.

  • Зробити це можна просто, дублюючи першу кімнату (виберіть вузол Kitchen, клацніть правою кнопкою мишки і виберіть Дублювати).

  • Поверніть і розташуйте другу кімнату так, щоб отвори співпали.

  • Перейменуйте другу кімнату на Lounge.

Крок 3

../../../_images/tutorial_simple_3.png
  • Далі ми додамо портал між двома кімнатами.

  • Створити новий Portal (Портал) на кухні.

  • Масштабуйте і розташуйте портал за допомогою вузла Transform в інспекторі, так щоб він поміщався в отвір між двома кімнатами.

  • Площина порталу повинна дивитися назовні від вихідної кімнати, тобто до lounge. На цей напрямок вказує стрілка в редакторі gizmo, а також колір порталу gizmo.

Крок 4

../../../_images/tutorial_simple_4.png
  • Щоб зробити речі більш захоплюючими, ми хочемо додати ще кілька коробок в кімнати.

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

  • На скріншоті коробки є нащадками просторового вузла Freeform, який утримує їх в порядку.

  • Коробки також мають зелений просторовий матеріал, призначений їм, щоб вони більше виділялися з іншої частини кімнати.

  • Давайте також створимо OmniLight (Світло Навсібіч), щоб воно було автоматично розміщене в одній з кімнат.

Крок 5

../../../_images/tutorial_simple_5.png
  • Далі настає вирішальний етап. Ми повинні дати пояснити Керівнику кімнат, де знаходяться кімнати!

  • Виберіть Керівник Кімнат і подивіться у вікні інспектора в розділі Paths (Контури).

  • Вам потрібно призначити Room List (Список Кімнат), щоб вказати на вузол RoomList, який ми створили раніше (і який є батьком усіх кімнат).

Крок 6

../../../_images/tutorial_simple_6.png
  • Переконайтеся, що ви зберегли свій проект, перш ніж робити цей наступний крок. Це завжди гарна ідея, зберегти і зробити резервну копію перед перетворенням.

  • Виберіть Керівник Кімнат, і ви побачите кнопку на панелі інструментів у верхній частині перегляду 3d-редактора під назвою Перетворити кімнати. Натисніть цю кнопку.

  • Якщо все піде добре, Керівник Кімнат створить дані про виконання (графік кімнат) для вибракування оклюзії під час виконання.

  • Ви можете побачити лоґ процесу перетворення у вікні виводу. Це корисно для пошуку проблем.

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

Висновки

На цьому завершується цей простий урок. Не бійтеся експериментувати з системою кімнат, яку ви створили.

Спробуйте такі речі

  • Створення різних типів геометрії. Вузли CSG, системи частинок і Мультимеші підтримуються системою порталів.

  • Спробуйте створити камеру і додати її на сцену. Якщо ви запустите сцену, ви помітите, що вибракування порталу не є активним. Це тому, що необхідно створювати room graph кожен раз, коли ви завантажуєте рівень, перетворюючи кімнати. Замість того, щоб використовувати кнопку в редакторі, в реальній грі ви викликаєте функцію в RoomManager для перетворення рівня, яка називається rooms_convert(). Спробуйте це за допомогою скрипта, запустивши її в рамках функції _ready().

  • Геометрія, яку ви створили має режим STATIC (не рухається). Якщо ви подивитеся в інспектор для геометрії вузлів, ви побачите, що ці режими в CullInstance. Тут ви можете встановити режим порталу Portal Mode для об'єктів в системі порталів. Вони визначають спосіб обробки вузла.

  • Якщо ви зараз пишете скрипт для переміщення одного з ваших об'єктів у кімнаті та перегляду його через камеру, під час запуску сцени, ви можете помітити, що об'єкт неправильно вибраковується. Це пов'язано з тим, що передбачається, що об'єкти STATIC не рухаються в системі. Зміна на DYNAMIC дасть правильне вибракування.

  • Режимів порталів кілька , вони описані в основній документації.

  • Спробуйте ввімкнути та вимкнути портал під час виконання скрипта. Ви можете викликати set_portal_active(), щоб відкрити і закрити портал.

  • Якщо вибрати портал, з'явиться 4 дескриптори. Спробуйте перетягнути точки порталу за допомогою мишки, і подивитися, як це впливає на об'єкти, які вибраковуються.

  • Якщо ви виберете кімнату та натиснете кнопку Згенерувати точки на панелі інструментів, вона зберігатиме точки корпусу кімнати в інспекторі кімнати. Тепер ви можете редагувати їх за допомогою дескрипторів gizmo.