Створення Minecraft на Unity3D. Частина перша. Створюємо базовий куб з текстурою


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Ми починаємо серію уроків, орієнтовану на те, щоб навчити Вас створювати просту Minecraft-подібну гру, а також вивчити різні аспекти движка Unity3D. Оскільки це вступний урок, алгоритми і структура об’єктів, представлені в цій серії, не найефективніші.

Приступаємо до розробки

Скачайте останню версію Unity3D звідси.

Скачайте текстури, які Вам знадобляться в процесі розробки проекту, описаного в цьому керівництві.

Спершу давайте ознайомимося з Unity3D. Коли Ви запустите Unity3D вперше, спливе вікно Project Wizard. Ви можете імпортувати один із вбудованих пакетів Unity. Пакети – це колекції різних файлів (коду, моделей, аудіо-файлів, текстур і так далі), які зберігаються у вигляді ієрархічної структури, інкапсульованої у файли з розширенням .unitypackage. Пакети можуть бути експортовані з будь-якого Unity-проекту. Таким чином, можна дуже просто переносити різні файли між проектами, зберігаючи їх ієрархію. Зараз нам не треба імпортувати пакети.

Вікно Unity Project Wizard

Після того як Ви задасте шлях для нового проекта, натисніть кнопку Create, щоб завершити створення проекту. Якщо Ви відкрили Unity і створили проект завчасно, то завжди можете створити новий проект, натиснувши File New Project, щоб викликати вікно Project Wizard.

Створення нового проекту Unity

Інтерфейс Unity поділений на декілька вкладок:

  • Вкладка Project містить усі ресурси, використовувані в грі. Для охайності рекомендується, щоб усі файли проекту знаходилися в теках з відповідними іменами (Materials, Textures, Models, Prefabs і так далі). Це вікно показує, як файли зберігаються на Вашому жорсткому диску, але дуже важливо, щоб будь-які зміни файлів проекту були зроблені з вкладки Project, а не з Провідника, інакше Ви ризикуєте безповоротно втратити зв’язок між файлами.
  • Вкладка Console відображає корисні налагоджувальні повідомлення. Якщо у Вас є мінімальний досвід у програмуванні, то Ви, ймовірно, знаєте, чому саме вони корисні.
  • Вкладка Inspector показує різні компоненти, що містяться в об’єктах із вкладок Hierarchy чи Project. Ви можете модифікувати будь-які значення редагованих об’єктів звідси.
  • Вкладка Hierarchy містить список назв усіх об’єктів, розташованих на поточній сцені.
  • Вкладка Scene показує ігровий світ з довільної точки (відмінною від точки, в якій розташована головна гральна камера). Ви можете змінити позицію цієї камери за допомогою клавіш W, S,A, D і правої кнопки миші.
  • Вкладка Game показує, що відбувається, коли Ви починаєте гру, з точки зору гральної камери. На відміну від вкладки Game, вкладка Scene відображає сітку.

Ви можете розташувати вкладки, як Вам зручно, перетягнувши їх мишкою в потрібне місце.

Інтерфейс Unity

Будь-який об’єкт або скрипт, доданий в проект, може бути збережений у файлі сцени з розширенням .unity. Сцени ідентичні ігровим рівням. Unity-розробник може розмістити гральні файли на окрему сцену, коли це необхідно, і завантажити їх під час виконання коду. Будь-який проект може містити декілька сцен. Щоб зберегти поточну сцену, натисніть File → Save Scene / Save Scene as. і наберіть назву у вікні провідника.

Збереження сцени

Збережіть її в теці Assets – кореневій теці Unity-проекту.

Найменування сцени

Якщо Ви відкриєте теку Assets у вкладці Project, можете виявити там щойно створену сцену. Клікніть тут правою клавішею миші й створіть три нові теки: Code, Materials і Textures, як показано на картинці:

Створення нової теки

Необхідні теки

Тепер ми готові почати! Перетягніть текстури куба і скайбокса в теку Textures.

Імпортовані в проект текстури куба і скайбокса

Потім зайдіть в теку Materials і створіть чотири матеріали:

  • SkyboxMaterial,
  • BottomMaterial,
  • SideMaterial,
  • TopMaterial.

Матеріали додають кольору на 3D-объекты за допомогою програм, названих “шейдерами” і оброблюваних на GPU. Більше інформації про матеріали Unity і шейдери Ви можете отримати тут. Три матеріали, які ми створили, будуть застосовані до сторін куба, який ми створимо в наступному розділі.

Створення нового матеріалу

Матеріали для скайбокса і сторін куба

Кликніть лівою кнопкою миші на BottomMaterial. У вкладці Inspector кликніть по кнопці Select, розташованою в компоненті Texture матеріалу, а потім, у вікні, що спливло, виберіть текстуру bottom.

Огляд матеріалу у вкладці Inspector

Вибір компонента текстури

Потім виберіть ті, що відповідають текстури для SideMaterial і TopMaterial, як показано на картинці нижче.

Матеріали куба із завантаженими текстурами

Якщо Ви хочете, щоб на задньому плані відображався красивий пейзаж, то можете додати скайбокс. Для цих цілей ми створили SkyboxMaterial, на який накладемо решту шість текстур з теки Textures.

Натисніть лівою кнопкою миші на SkyboxMaterial. У вкладці Inspector, поряд з міткою Shader, кликніть на випадний список і виберіть RenderFX → Skybox. Це вбудовані в Unity шейдери, які імплементують базові (модель освітлення Блінна-Фонга, рельєфне текстурування, відображення, прозорість і так далі) й декілька просунутих шейдерів, таких як паралакс-ефект. Ви також можете писати свої шейдери і додавати їх в проект.

Вибір шейдера для відмальовки скайбокса

Далі, за аналогією з матеріалами сторін куба, описаними вище, нам треба додати шість skybox-текстур у відповідні місця.

Вибір відповідних текстур скайбокса

Далі ми повинні додати скайбокс на нашу сцену. Перейдіть в Edit → Render Settings. У вкладці Inspector, поряд з міткою Skybox Material, натисніть на маленький кружечок праворуч і виберіть SkyboxMaterial з матеріалів проекту.

Вибір матеріалу скайбокса в RenderSettings

Якщо ми придивимося, то можемо виявити грані skybox-куба. Цього можна уникнути за допомогою накладення текстур. Коли текстура накладена на іншу, пікселі, розташовані на краях текстури, повторюються, заповнюючись кольором країв моделі, на якій вони розташовані. Більше інформації про накладення текстур можна отримати тут.

Типова поведінка ненакладених текстур

Перейдіть в теку Textures у вкладці Project, виберіть усі зображення, в пункті Wrap Mode виберіть Clamp з випадного списку і натисніть Apply.

Установка Wrap Mode для всіх текстур проекту

Створюємо куб

Було б дуже добре використати вбудований примітив Unity-куб як основу для кубів Minecraft, і розташувати відповідні текстури з текстурного атласу на стороні куба, використовуючи UV-перетворення, але в цьому керівництві ми дотримуватимемося простих методик (з найменшою кількістю зовнішніх ресурсів) і використовуватимемо окремі меши для кожної сторони.

У верхньому лівому меню клікніть на GameObject → Create Other → Quad. Повторіть цю дію ще п’ять разів (нам треба створити шість сторін куба).

Створення граней куба

Тепер назвіть кожну із шести сторін відповідним ім’ям:

Top, Bottom, Right, Left, Front, Back.

Об’єкти, розташовані на сцені, називаються GameObject. Щоб перейменувати GameObject, кликніть правою клавішею миші на ньому у вкладці Hierarchy і натисніть Rename.

Перейменування граней куба

Якщо Ви тільки починаєте знайомитися з Unity, то Вам украй рекомендується ознайомитися з навігацією у вікні Scene і позиціонуванням GameObject, до того як йти далі.

Після створення ігрові об’єкти будуть розміщені на сцені випадковим чином (насправді, нові GameObject розташовані в точці поточного розташування камери). Ми повинні розташувати усі сторони куба. Щоб вирівняти їх, у вкладці Hierarchy кликніть на кожну сторону і модифікуйте її позицію і обертання у вкладці Inspector таким чином:

Перетворення значень для кожної грані

Наш сірий куб готовий:

Звичайний сірий куб

Якщо куб не центрований у вікні Scene, двічі кликніть на одній з його сторін у вкладці Hierarchy, щоб вирівняти камеру.

У вкладці Project зайдіть в теку Materials. Щоб створити красивий піксельний куб, ми повинні перемістити наступні матеріали:

  • TopMaterial вгору;
  • BottomMaterial вниз;
  • SideMaterial ліворуч, праворуч, на задню і передню сторону у вкладці Hierarchy.

Застосовуємо матеріали до GameObject ‘ам на сцені

Ось результат:

Куб з текстурами

Чудово! Виглядає, як куб з Minecraft, але зараз у нас є шість розділених частин, а не автономний GameObject, який ми могли б розмістити на нашій сцені. Ми використовуватимемо просту систему ієрархій Unity, щоб перемістити ці частини в один GameObject. Вона дозволяє будь-кому GameObject стати нащадком іншого GameObject на сцені за допомогою простого перетягання об’єкта-нащадка на бажаний об’єкт-батько. Це надзвичайно зручно, тому що Transform нащадка (позиція, обертання і масштаб об’єкта) стане відносним батьківському об’єкту.

У лівому верхньому меню виберіть Game Object → Create Empty. Ця дія створить порожній GameObject, який міститиме тільки компонент Transform.

Створення порожнього GameObject

Кликніть правою кнопкою на об’єкті й перейменуйте його:

Перейменування порожнього GameObject

Кликніть лівою кнопкою на об’єкті й змініть його позицію на (0,0,0).

GameObject, розміщений в центрі сцени

Тепер виберіть шість сторін куба і перетягніть їх у новий порожній GameObject.

Складання куба

Якщо Ви виявили помилки, як на картинці нижче, врахуйте, що це звичайне явище, коли Ви вручну міняєте ієрархію GameObject. Просто натисніть Clear on Play у вкладці Console, щоб очистити лог помилок, коли запускаєте гру.

Типова помилка

Куб готовий! Не забудте зберегти сцену!

У наступній частині ми завершимо створення нашої гри.

Переклад статті “Build Minecraft in Unity”

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *