Зразок Кімнат і Порталів¶
Завантажте цей навчальний проект: Простий Зразок Порталів .
Вступ¶
Цей урок познайомить вас зі створенням системи кімнат "Hello World" з двома кімнатами та порталом між ними.
Крок 1¶

Створіть новий проект.
Додайте вузол Spatial (Просторовий), як корінь сцени (на скріншоті він називається "Root" (Корінь)).
Далі додайте вузол RoomManager (Керівник кімнат). Нам знадобиться він пізніше, щоб обробити систему приміщень.
Далі ми повинні почати визначати наші кімнати. Ми створюємо всі наші кімнати під іншим просторовим вузлом, який назвемо "RoomList" (Список кімнат).
Додайте в список кімнат вузол Room (Кімната).
Ми назвали кімнату
Kitchen
(Кухня).Тепер ми створимо геометрію нашої кімнати. Імена, які ви даєте геометрії, залежить від вас.
Створіть MeshInstance (Екземпляр Меша) для підлоги. Створіть коробку, додавши ресурс CubeMesh в MeshInstance. Масштабуйте і розташуйте його так, щоб утворилася підлога.
Створіть екземпляри мешів для стін. Створіть для цього більше коробчастих мешів, а потім масштабуйте та розташуйте їх. Обов'язково залиште отвір з одного боку. Для цього потрібно буде створити два сегменти стіни.
Крок 2¶

Тепер нам потрібно створити іншу кімнату.
Зробити це можна просто, дублюючи першу кімнату (виберіть вузол
Kitchen
, клацніть правою кнопкою мишки і виберіть Дублювати).Поверніть і розташуйте другу кімнату так, щоб отвори співпали.
Перейменуйте другу кімнату на
Lounge
.
Крок 3¶

Далі ми додамо портал між двома кімнатами.
Створити новий Portal (Портал) на кухні.
Масштабуйте і розташуйте портал за допомогою вузла
Transform
в інспекторі, так щоб він поміщався в отвір між двома кімнатами.Площина порталу повинна дивитися назовні від вихідної кімнати, тобто до
lounge
. На цей напрямок вказує стрілка в редакторі gizmo, а також колір порталу gizmo.
Крок 4¶

Щоб зробити речі більш захопливими, ми хочемо додати ще кілька коробок в кімнати.
Розмістіть ці коробки в якості нащадків вузлів кімнат прямо вказуючи системі, в якій кімнаті повинні знаходитися об'єкти. Однак ми також можемо створювати ці об'єкти за межами кімнат. За умови, що вони знаходяться у відділенні
RoomList
, система намагатиметься автоматично розмістити їх у правильному приміщенні під час виконання гри.На скріншоті коробки є нащадками просторового вузла
Freeform
, який утримує їх в порядку.Коробки також мають зелений просторовий матеріал, призначений їм, щоб вони більше виділялися з іншої частини кімнати.
Давайте також створимо OmniLight (Світло Навсібіч), щоб воно було автоматично розміщене в одній з кімнат.
Крок 5¶

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

Переконайтеся, що ви зберегли свій проект, перш ніж робити цей наступний крок. Це завжди гарна ідея, зберегти і зробити резервну копію перед перетворенням.
Виберіть Керівник Кімнат, і ви побачите кнопку на панелі інструментів у верхній частині перегляду 3d-редактора під назвою Перетворити кімнати. Натисніть цю кнопку.
Якщо все піде добре, Керівник Кімнат створить дані про виконання (графік кімнат) для вибракування оклюзії під час виконання.
Ви можете побачити лоґ процесу перетворення у вікні виводу. Це корисно для пошуку проблем.
Якщо тепер ви переміщуєте камеру редактора всередині кімнат, ви повинні побачити, як меші в протилежній кімнаті вибраковуються в залежності від того, що ви можете побачити через портал.
Висновки¶
На цьому завершується цей простий урок. Не бійтеся експериментувати з системою кімнат, яку ви створили.
Спробуйте такі речі¶
Створення різних типів геометрії. Вузли CSG, системи частинок і Мультимеші підтримуються системою порталів.
Спробуйте створити камеру і додати її на сцену. Якщо ви запустите сцену, ви помітите, що вибракування порталу не є активним. Це тому, що необхідно створювати
room graph
кожен раз, коли ви завантажуєте рівень, перетворюючи кімнати. Замість того, щоб використовувати кнопку в редакторі, в реальній грі ви викликаєте функцію в RoomManager для перетворення рівня, яка називаєтьсяrooms_convert()
. Спробуйте це за допомогою скрипта, запустивши її в рамках функції_ready()
.Геометрія, яку ви створили має режим
STATIC
(не рухається). Якщо ви подивитеся в інспектор для геометрії вузлів, ви побачите, що ці режими вCullInstance
. Тут ви можете встановити режим порталу Portal Mode для об'єктів в системі порталів. Вони визначають спосіб обробки вузла.Якщо ви зараз пишете скрипт для переміщення одного з ваших об'єктів у кімнаті та перегляду його через камеру, під час запуску сцени, ви можете помітити, що об'єкт неправильно вибраковується. Це пов'язано з тим, що передбачається, що об'єкти
STATIC
не рухаються в системі. Зміна наDYNAMIC
дасть правильне вибракування.Режимів порталів кілька , вони описані в основній документації.
Спробуйте ввімкнути та вимкнути портал під час виконання скрипта. Ви можете викликати
set_portal_active()
, щоб відкрити і закрити портал.Якщо вибрати портал, з'явиться 4 дескриптори. Спробуйте перетягнути точки порталу за допомогою мишки, і подивитися, як це впливає на об'єкти, які вибраковуються.
Якщо ви виберете кімнату та натиснете кнопку Згенерувати точки на панелі інструментів, вона зберігатиме точки корпусу кімнати в інспекторі кімнати. Тепер ви можете редагувати їх за допомогою дескрипторів gizmo.