Простий приклад генерації рівня - nullcode studio, ігри, unity, скрипти

Логіка роботи генератора в таких випадках, залежить від поставленого завдання, наприклад, потрібно розмістити рандомно об'єкти на ділянці певного розміру, або зробити збірку з заготовлених кімнат. У нашому прикладі реалізації генерації рівня, ми спробуємо зробити генератор тунелю / печери, щось в цьому дусі. Суть в наступному. У нас є підготовлені префаб різних секцій, в кожній з них, є точка входу і виходу. Завдання скрипта, «склеїти» точку виходу однієї секції, з точкою входу іншої. Тобто, це вийде коридор, рандомних довжини, не перевищуючи максимальне значення, і з поворотами в одну або іншу сторону, так само у випадковому порядку.

Простий приклад генерації рівня - nullcode studio, ігри, unity, скрипти


Розстановка точок на моделі:

Простий приклад генерації рівня - nullcode studio, ігри, unity, скрипти


Зверніть увагу, на напрям осі Z. саме цей вектор буде напрямних. І як видно на скріншоті, секції повинні бути однакові за розміром, щоб умовно все поле поділялося на рівні клітини.

Далі, на префаб чіпляємо скрипт Section:


Тут і вказуємо дочірні точки об'єкта.

Крім основних префабов, ще знадобляться стартові і кінцеві. Припустимо, є п'ять стартових і фінальних кімнат, скрипт з початок вибере випадкову стартову секцію, потім від неї буде будувати основні, а в кінці циклу, приліпить кінцеву кімнату. Тому, створюємо ці секції, ці префаб будуть потім в окремих масивах.

Тепер, чіпляємо на сцену скрипт Generator:


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

Завантажити демо проект:

Ви не можете завантажувати файли з нашого сервера