Как сделать майнкрафт на unity

Создание Minecraft на Unity3D. Часть вторая. Генерация мира

Как сделать майнкрафт на unity

Это вторая часть руководства по созданию собственной Minecraft-подобной игры. В ней мы напишем генератор мира и добавим персонажа, который сможет перемещаться по миру, ставить и удалять блоки. В предыдущей части мы создали куб с текстурой.

Добавляем функциональность мыши

Прежде чем мы приступим к программированию, давайте добавим на нашу сцену направленный свет. Нам нужен источник света, чтобы лучше видеть наш 3D-мир.

Как сделать майнкрафт на unity

Вы можете поменять направление света, если хотите:

Как сделать майнкрафт на unity

Позиционируем источник света

Теперь мы можем перейти к написанию нашего первого скрипта. Мы хотим реализовать функционал добавления нового экземпляра куба около стороны, на которую мы щелкаем правой кнопкой мыши, и удаления существующего блока по нажатию левой клавиши. Во вкладке Project перейдите в папку Code и создайте два C#-скрипта.

Как сделать майнкрафт на unity

Добавляем в проект C#-скрипт

Мы назовем их WorldGenerator и ClickOnFaceScript.

Как сделать майнкрафт на unity

Прежде чем мы продолжим, вам крайне рекомендуется ознакомиться со скриптингом в Unity.

Теперь откройте WorldGenerator.cs в MonoDevelop (которая уже установлена вместе с Unity) двойным щелчком по нему и введите следующий код:

Мы используем статический метод, чтобы создать клон нашего куба. Unity позволяет нам задать имя и позицию клона. Больше информации о методе Instantiate вы можете получить здесь.

В Minecraft, если вы находитесь достаточно близко к кубу и кликаете по нему левой кнопкой мыши, он исчезает и появляется в вашем инвентаре. Когда вы кликаете правой клавишей на любую из сторон куба, новый экземпляр появится на той стороне, по которой вы кликнули, в случае, если у вас достаточно материала в инвентаре. В данном уроке мы не будем ставить перед собой ограничения, так что у нас будет бесконечное количество кубов и бесконечная дистанция клика.

8–30 марта, Онлайн, Беcплатно

Откройте ClickOnFaceScript.cs и введите туда этот код:

Теперь переместите скрипт на каждую из шести сторон куба на сцене.

Как сделать майнкрафт на unity

Применяем скрипт к GameObject

Скрипт должен появиться на каждой стороне во вкладке Inspector.

Как сделать майнкрафт на unity

Давайте запустим игру. Нажмите Как сделать майнкрафт на unityи проверьте, что отладочные сообщения появляются, когда вы кликаете по кубу во вкладке Game.

Как сделать майнкрафт на unity

Тестируем нажатия кнопок мыши

Запомните! В режиме игры любые изменения, которые вы произвели с элементами во вкладке Scene, будут отменены. Не меняйте ничего, пока игра запущена. Нажмите Как сделать майнкрафт на unityеще раз, чтобы остановить игру.

Теперь у нас есть все что нужно, чтобы создавать новые кубы по клику правой клавишей мыши. Мы должны определить точную позицию нового GameObject, который будет появляться при клике. На нашей сцене расстояние между центрами двух соседних блоков равно единице.

Для простоты мы назовем центр куба, по которому кликают, буквой C, а центр блока, который должен появиться — N. Мы рассматриваем эти центры как позиции в 3D-пространстве.

Мы можем обобщить сказанное выше в простую формулу: N = C + delta, где delta — это смещение, требуемое для расчета центра нового блока. Каждая из шести сторон содержит свой экземпляр ClickOnFaceScript и разное значение delta.

Мы должны изменить ClickOnFaceScript.cs, чтобы реализовать функционал, описанный выше. Откройте скрипт и измените файл таким образом:

Вернитесь в редактор и поменяйте значения delta в соответствии с картинками:

Как сделать майнкрафт на unity

Вся необходимая информация обведена

Проверьте, что все работает. Запустите игру несколько раз, задавая разные позиции камере (изменяя ее Transform во вкладке Inspector), чтобы проверить, что введенные нами значения delta верны.

Как сделать майнкрафт на unity

Настраиваем позицию камеры и нажимаем на стороны кубов

Создаём персонажа

Если все работает, как задумано, мы можем перейти к созданию персонажа, чтобы мы могли свободно двигаться в нашей игре. К счастью для нас, Unity предоставляет готовый пакет с контроллером персонажа от первого лица, так что нам не нужно будет создавать его с нуля. Перейдите в Assets → Import Package и выберите Character Controller.

Как сделать майнкрафт на unity

Импортируем пакет Character Controller

В окне Importing package выберите следующее:

Как сделать майнкрафт на unity

Во вкладке Project перейдите в Standard Assets → Character Controllers, выберите First Person Controller.prefab и перетащите его во вкладку Hierarchy.

Как сделать майнкрафт на unity

Заготовка First Person Character Controller

Расположите его близко к центру сцены.

Как сделать майнкрафт на unity

Настраиваем местоположение заготовки

Мы должны защитить нашего персонажа от падения, прежде чем перейти к тестированию. Мы вернем значение обратно, когда закончим алгоритм генерации мира.

Как сделать майнкрафт на unity

Гравитация не нужна!

Проверьте, что все работает.

Как сделать майнкрафт на unity

У First Person Controller на нашей сцене есть Camera, прикрепленная, как дочерний GameObject. Когда мы запустим игру, эта камера станет главной на сцене, так что нам больше не нужна другая. Каждая камера содержит компонент AudioListener. Это и есть причина, по которой сообщение «There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.» появляется во вкладке Console. Отключите объект Main Camera во вкладке Hierarchy.

Как сделать майнкрафт на unity

Отключаем главную камеру

Мы почти закончили! Откройте скрипт WorldGenerator.cs и модифицируйте его:

Скрипт будет запускаться только тогда, когда он прикреплен к какому-нибудь GameObject на сцене. Создайте пустой Empty GameObject и перетащите WorldGenerator.cs на него.

Как сделать майнкрафт на unity

Перетаскиваем WorldGenerator.cs на новый GameObject

Перетащите объект Voxel на соответствующее поле в скрипте. Эта версия алгоритма генерации мира хранит все блоки в памяти, так что не рекомендуется задавать большие значения полям Size X, Size Y и Size Z, иначе вам грозит низкая производительность или, что еще хуже, Unity может вылететь.

Как сделать майнкрафт на unity

Размеры больше указанных выставлять не стоит

Прежде чем мы увидим нашу разработку в действии, не забудьте поправить поле Gravity в скрипте, прикрепленном к Character Controller.

Как сделать майнкрафт на unity

И всё-таки гравитация важна

Готово! Нажмите Как сделать майнкрафт на unityи веселитесь!

Источник

Создание Minecraft на Unity3D. Часть первая. Создаем базовый куб с текстурой

Как сделать майнкрафт на unity

Мы начинаем серию уроков, ориентированную на то, чтобы научить вас создавать простую Minecraft-подобную игру, а также изучить различные аспекты движка Unity3D. Так как это вводный урок, алгоритмы и структура объектов, представленные в этой серии, не самые эффективные.

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

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

Скачайте текстуры, которые вам потребуются в процессе разработки проекта, описанного в этом руководстве.

Вы можете использовать любое из предложенных разрешений. Вы также можете скачать оригинал:

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

Как сделать майнкрафт на unity

Окно Unity Project Wizard

После того, как вы зададите путь для нового проекта, нажмите кнопку Create, чтобы завершить создание проекта. Если Вы открыли Unity и создали проект заблаговременно, вы всегда можете создать новый проект, нажав FileNew Project, чтобы вызвать окно Project Wizard.

Как сделать майнкрафт на unity

Создание нового проекта Unity

Интерфейс Unity разделен на несколько вкладок:

Вы можете расположить вкладки, как вам удобно, перетащив их мышкой в нужное место.

Как сделать майнкрафт на unity

Любой объект или скрипт, добавленный в проект, может быть сохранен в файле сцены с расширением .unity. Сцены идентичны игровым уровням. Unity-разработчик может разместить игровые файлы на отдельную сцену, когда это необходимо, и загрузить их во время выполения кода. Любой проект может содержать несколько сцен. Чтобы сохранить текущую сцену, нажмите File → Save Scene / Save Scene as… и наберите название в окне проводника.

Как сделать майнкрафт на unity

Сохраните ее в папке Assets — корневой папке Unity-проекта.

Как сделать майнкрафт на unity

Если вы откроете папку Assets во вкладке Project, вы можете обнаружить там только что созданную сцену. Кликните здесь правой клавишей мыши и создайте три новых папки: Code, Materials и Textures, как показано на картинке:

Как сделать майнкрафт на unity

Создание новой папки

Как сделать майнкрафт на unity

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

Как сделать майнкрафт на unity

Импортированные в проект текстуры куба и скайбокса

Затем зайдите в папку Materials и создайте четыре материала:

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

Как сделать майнкрафт на unity

Создание нового материала

Как сделать майнкрафт на unity

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

Кликните левой кнопкой мыши на BottomMaterial. Во вкладке Inspector кликните по кнопке Select, расположенной в компоненте Texture материала, а затем, во всплывшем окне, выберите текстуру bottom.

Как сделать майнкрафт на unity

Обззор материала во вкладке Inspector

Как сделать майнкрафт на unity

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

Затем выберите соответствующие текстуры для SideMaterial и TopMaterial, как показано на картинке ниже.

Как сделать майнкрафт на unity

Материалы куба с загруженными текстурами

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

Нажмите левой кнопкой мыши на SkyboxMaterial. Во вкладке Inspector, рядом с меткой Shader, кликните на выпадающий список и выберите RenderFX → Skybox. Это встроенные в Unity шейдеры, которые имплементируют базовые (модель освещения Блинна-Фонга, рельефное текстурирование, отражения, прозрачность и т.д.) и несколько продвинутых шейдеров, таких как параллакс-эффект. Вы также можете писать свои шейдеры и добавлять их в проект.

Как сделать майнкрафт на unity

Выбор шейдера для отрисовки скайбокса

Далее, по аналогии с материалами сторон куба, описанными выше, нам нужно добавить шесть skybox-текстур в соответствующие места.

Как сделать майнкрафт на unity

Выбор подходящих текстур скайбокса

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

Как сделать майнкрафт на unity

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

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

Как сделать майнкрафт на unity

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

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

Как сделать майнкрафт на unity

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

Создаем куб

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

1–2 апреля, Нижний Новгород и онлайн, От 1000 до 3500 ₽

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

Как сделать майнкрафт на unity

Создание граней куба

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

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

Объекты, расположенные на сцене, называются GameObject. Чтобы переименовать GameObject, кликните правой клавишей мыши на нем во вкладке Hierarchy и нажмите Rename.

Как сделать майнкрафт на unity

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

Если вы только начинаете знакомиться с Unity, вам крайне рекомендуется ознакомиться с навигацией в окне Scene и позиционированием GameObject, прежде чем идти дальше.

После создания игровые объекты будут размещены на сцене случайным образом (на самом деле, новые GameObject расположены в точке текущего расположения камеры). Мы должны расположить все стороны куба. Чтобы выровнять их, во вкладке Hierarchy кликните на каждую сторону и модифицируйте её позицию и вращение во вкладке Inspector таким образом:

Как сделать майнкрафт на unity

Преобразование значений для каждой грани

Вуаля! Наш серый куб готов:

Как сделать майнкрафт на unity

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

Во вкладке Project зайдите в папку Materials. Чтобы создать красивый пиксельный куб, мы должны переместить следующие материалы:

Как сделать майнкрафт на unity

Применяем материалы к GameObject’ам на сцене

Как сделать майнкрафт на unity

Замечательно! Выглядит, как куб из Minecraft, но сейчас у нас есть шесть разделенных частей, а не автономный GameObject, который мы могли бы разместить на нашей сцене. Мы будем использовать простую систему иерархий Unity, чтобы переместить эти части в один GameObject. Она позволяет любому GameObject стать потомком другого GameObject на сцене с помощью простого перетаскивания объекта-потомка на желаемый объект-родитель. Это чрезвычайно удобно, потому что Transform потомка (позиция, вращение и масштаб объекта) станет относительным родительскому объекту.

В левом верхнем меню выберите Game Object → Create Empty. Это действие создаст пустой GameObject, который будет содержать только компонент Transform.

Как сделать майнкрафт на unity

Создание пустого GameObject

Кликните правой кнопкой на объекте и переименуйте его:

Как сделать майнкрафт на unity

Переименование пустого GameObject

Кликните левой кнопкой на объекте и измените его позицию на (0,0,0).

Как сделать майнкрафт на unity

GameObject размещён в центре сцены

Теперь выберите шесть сторон куба и перетащите их в новый пустой GameObject.

Как сделать майнкрафт на unity

Если вы обнаружили ошибки, как на картинке ниже, учтите, что это обычное явление, когда вы вручную меняете иерархию GameObject. Просто нажмите Clear on Play во вкладке Console, чтобы очистить лог ошибок, когда запускаете игру.

Как сделать майнкрафт на unity

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

Как сделать майнкрафт на unity

В следующей части мы завершим создание нашей игры.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *