Как сделать стратегию на unity

Добавил пользователь Валентин П.
Обновлено: 10.09.2024

Разработка игр на Unity — отличный способ войти в игрострой и начать свой путь в геймдеве. Первые вопросы, которыми задаётся новичок, это как стать разработчиком игр, на что обращать внимание и где учиться.

Мы с факультетом разработки игр на Unity от GeekBrains собрали 20 советов и трюков, которые помогут освоиться в редакторе.

Не используйте Distance() или magnitude в векторах

Для расчёта расстояния между двумя векторами есть метод Distance() и поле magnitude . Но в процессе вычислений они оба используют операцию извлечения квадратного корня, которая является очень ресурсозатратной. Чтобы этого избежать, используйте поле sqrMagnitude . Оно возвращает квадрат расстояния между векторами. Остаётся лишь сравнить его со значением, также возведённым в квадрат.

Математические операции в полях инспектора

В любых числовых полях инспектора можно вводить не только цифры, но и математические выражения. Например 2 / 3 , 0,5 * 7 .

С версии 2021.2.0 Alpha 10 в инспекторе стало ещё больше доступных выражений:

  • sqrt — извлечение квадратного корня;
  • sin / cos / tan — синус/косинус/тангенс значения соответственно;
  • floor — округление значения вниз;
  • ceil — округление значения вверх;
  • round — округление значения к ближайшему целому числу.

Также математические операции можно выполнять с выделением нескольких объектов. Например выражение -=10 отнимет 10 от соответствующей координаты каждого объекта.

Ещё можно распределить координаты случайно или равноудалённо с помощью функций L(N,M) и R(N,M) соответственно, где N и M — минимальное и максимальное значения координат.

Rich Text в консоли

В обучении разработке игр часто упускают возможности кастомизации Unity, которые достаточно обширны. Например во встроенных компонентах текста UI используется форматирование Rich Text. Оно позволяет сделать текст жирным, курсивом, изменять его цвет, размер и даже присваивать материал.

Пример Rich Text в разработке на Unity

Создание элементов меню редактора

Используя атрибут [MenuItem(“My Menu”)] , можно создавать собственные вкладки меню и элементы в них. Требуется импорт пространства UnityEditor .

Код для создания кнопки меню в Unity

Создание дополнительных опций в контекстном меню компонента

Помимо собственных элементов меню можно создавать дополнительные элементы в контекстном меню компонентов. Для этого используется атрибут [ContextMenu(“Name”)] .

Код для созданий дополнительных опций в Unity

Кастомная опция в контекстном меню при разработке игр в Unity

Сохранение изменений компонента в Play Mode

Если в процессе создания игры на Unity внести какие-либо изменения в компонент с запущенной игрой, то эти изменения не сохранятся. Если вы вносили изменения в пределах одного компонента, то все его значения можно скопировать в контекстном меню компонента (Copy Component), а после того, как вы остановите игру, обратно их вставить через то же контекстное меню (Paste Component Values).

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

HideInInspector и SerializeField

Эти два атрибута помогут настроить отображение нужных полей в инспекторе. Если у вас много публичных полей, которые засоряют инспектор, то вы можете скрыть их атрибутом HideInInspector . Если же вам нужно, чтобы приватное поле, которое по-умолчанию не отображается в инспекторе, всё же можно было редактировать, используйте атрибут SerializeField .

Автоматическое создание глубины в изометрических играх

При создании 2D игры с изометрической проекцией вам может понадобиться имитировать глубину сортировкой слоёв спрайтов. То есть тот объект, который находится на заднем плане, должен быть на слой ниже переднего объекта. Если для неподвижных объектов это легко реализовать, просто настроив их слои в компоненте SpriteRenderer , то для подвижных объектов всё немного сложней.

Однако Unity уже позаботились об этом и дали возможность сортировать объекты по слоям, исходя из их координат. Для начала нужно настроить сортировку. Для этого перейдите в Edit->Project Settings->Graphics->Camera Settings. Свойство Transparency Sort Mode выставьте в Custom Axis , а Transparency Sort Axis в (0; 1; 0) . Теперь все объекты, которые будут находится на одном слою, будут автоматически сортироваться исходя из координаты Y. Те, что выше — на задний план, а те, что ниже — на передний.

Такой простой трюк значительно упростит разработку игр на Unity. Ведь без него бы пришлось вручную контролировать координаты различных объектов и менять их слои.

Выполнение кода, не привязанного к объекту

Атрибут метода [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] позволит выполнить код, не привязывая скрипт к какому-либо объекту. В данном случае код вызовется сразу после загрузки сцены.

Структуры и классы

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

Создание подслоёв

Меню слоёв в редакторе Unity

Фокусировка камеры редактора на объекте и следование за ним

Чтобы сфокусироваться камерой редактора на каком-либо объекте, выделите этот объект и нажмите F. Если объект движется и вам нужно, чтобы камера следовала за ним, нажмите F дважды.

Матрица коллизий

В Unity можно определить, какие из объектов будут сталкиваться друг с другом, а какие нет. Делается это через настройку матрицы коллизий. Для этого перейдите в Edit->Project Settings->Physics->Layer Collision Matrix.

Матрица слоёв физики

Если на пересечении двух слоёв убрать галочку, то объекты этих слоёв не будут сталкиваться друг с другом. В данном случае объект слоя Player не будет сталкиваться с другими объектами своего слоя и объектами слоя Walls .

Debug Mode в инспекторе

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

Меню инспектора в редакторе Unity

Пример инспектора с включённым Debug Mode в Unity

Если у компонента есть пользовательский редактор, то он не будет отображаться в в этом режиме — там будут видны только сами поля.

Мониторинг через график

В курсах по созданию игр консоль часто используется для вывода в неё каких-либо значений и мониторинга. Но если значение изменяется очень часто, то следить за этим будет не очень удобно. В таких случаях можно вывести это значение на график. Для этого вам понадобится AnimationCurve . Пример кода:

Посмотреть график можно, нажав на поле кривой в инспекторе:

Создание графика для отладки игры на Unity

Кеширование объектов

Ещё одна заметка с курсов создания компьютерных игр: старайтесь кешировать все объекты, с которыми вы часто работаете. Например, в скрипте вы часто обращаетесь к какому-либо компоненту через GetComponent . Вместо этого можно создать поле для этого компонента и присвоить его в методе Start . После этого можно будет обращаться напрямую к компоненту через это поле. Такое решение снизит нагрузку, так как операции GetComponent , Find , FindGameObjectsWithTag и т. д. сильно ресурсозатратны.

Создание пресетов для компонентов

Для каждого компонента можно создавать собственные пресеты. Пресет позволяет сохранить текущие настройки компонента и присвоить их другому компоненту того же типа. Пресеты хранятся в виде отдельных файлов.

Кнопка пресетов в компоненте Unity

Меню пресетов, которые помогут облегчить процесс разработки на Unity

Программная пауза

Снова про отладку, которая пригождается и разработчикам игр при обучении, и в дальнейшей работе. Поставить игру на паузу можно не только кнопкой в редакторе, но и через код. Для этого нужно установить поле EditorApplication.isPaused в значение true . Пригодиться это может во время отладки, когда нужно остановить игру прямо после какой-нибудь ошибки, чтобы детальнее её изучить.

Удобный импорт файлов из Photoshop в Unity

Установив пакет 2D PSD Importer, можно упростить процесс переноса изображений во время разработки игры из фотошопа в Unity. Этот пакет принимает файлы с расширением .psb . При импорте такого файла он автоматически создаёт в объекте все дочерние изображения, которые соответствуют слоям из фотошопа. Также он создаёт группу объектов с отсортированными по слоям компонентами SpriteRenderer .

Примечание Чтобы установить пакет, перейдите в Package Manager. В открывшемся окне в поле поиска введите имя нужного пакета. Выберите пакет и нажмите внизу кнопку Install.

Конечно, это далеко не все хитрости. Но уже с ними вы сможете облегчить себе процесс разработки. А узнать ещё больше фишек и профессионально освоить разработку игр на Unity можно на Факультете разработки игр от GeekBrains, где опытные преподаватели научат вас создавать игры с нуля и в том числе разберут особенности различных инструментов. Первые 6 месяцев обучения бесплатно.

Начнем с самого простого: загрузки и настройки Unity.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Выбор редактора в Unity

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

MonoDevelop 4 - существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

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

Вот несколько ссылок, которые могут быть вам полезными:

  • Изучение интерфейса Unitys : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • Создание сцены в Unity : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

Выберите меню File , а затем создаqnt новый проект. Не выбирайте нивакой стандартный пакет на первое время. Вы можете повторно импортировать их позже, если вы захотите, просто поначалу они будут просто сбивать вас с толку.

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

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

Не беспокойтесь о названии. Оно определяется в настройках, и чтобы изменить имя проекта достаточно просто переименовать папку.

Разметка и панели Unity

Перед вами пустая страница. С ней вы и будете работать, но вам потребуется время, чтобы настроить интерфейс в соответствии со своими конкретными нуждами. Лично мне удобнее, когда консоль находится рядом с игровым экраном, но если у вас маленький монитор, вы можете заменить панели вкладками.

Пустой проект

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

Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.

Папки в Unity

Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.

Вот пример структуры, которую мы используем в наших проектах. Вы можете адаптировать ее под свои предпочтения.

Ассеты проекта

В вашей панели Project, вы можете найти различные типы ассетов:

Префабы

Многоразовые игровые объекты (например: пули, враги, бонусы).

Префабы можно рассматривать как класс в языке программирования, который может быть обработан в игровых объектах. Это некая форма, которую можно дублировать и изменить по своему желанию в сцене или во время выполнения игры.

Сцены

Сцена содержит игровой уровень или меню.

В отличие от других объектов, создаваемых в панели "Проект", сцены создаются в меню "Файл". Если вы хотите создать сцену, нажмите на кнопку "Новая сцена" в подменю и не забудьте потом сохранить ее в папку Scenes.

Сцены должны быть сохранены вручную. Это классическая ошибка в Unity - сделать некоторые изменения в сцене и ее элементы и забыть сохранить их после. Ваш инструмент контроля версий не увидите никаких изменений до тех пор, сцена не сохранится.

Звуки

Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.

Scripts

Textures

Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в "Sprites".

Это неважно для 2D проекта, но, оставив название Textures (Текстуры), вы дадите возможность Unity автоматизировать некоторые задачи. Если вы хотите узнать подробную информацию по этой теме, вы можете прочитать об этом здесь , или здесь .

Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources ). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки "Play".

Каждый объект сцены является игровым объектом для Unity. Вы можете создать объект в главной сцене, или в другом объекте игры. Также вы можете в любое время переместить объект чтобы изменить его родителя.

Логические объекты

Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level .

Пустые объекты

В Unity можно создать пустой объект и использовать его в качестве "папки" для других игровых объектов. Это упростит структуру вашей сцены.

Пустые объекты

Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 - Background
  • 1 - Middleground
  • 2 - Foreground

Сохраните сцену в папке Scenes . Назовите ее как угодно, например Stage1 . Вот, что у нас получилось:

Первая сцена на Unity

Совет: по умолчанию игровой объект привязан к положению родителя. Это приводит к интересному побочному эффекту при использовании объекта камеры: если камера является дочерним объектом, она автоматически будет отслеживать положение родителя. Если же она является корневым объектом сцены или находится внутри пустого игрового объекта, она всегда показывает один и тот же вид. Однако если вы поместите камеру в движущийся игровой объект, она будет следовать за его передвижениями в пределах сцены. В данном случае нам нужна фиксированная камера, поэтому мы помещаем ее в пустой объект Render . Но запомните это свойство объекта камеры, оно может вам пригодиться. Мы подробно остановимся на этой теме в главе "Паралаксный скроллинг".

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:

TGPA фон

Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Новый спрайт для игры в Unity

Что такое спрайт?

По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.

Добавляем текстуру спрайта

Unity может автоматически установить фон для вашего спрайта. Если ничего такого не произошло, или если вы хотите изменить текстуру, перейдите на вкладку инспектора и выберите background : (фон)

Выбор спрайта в Unity

Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Вид спрайта

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite . Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 - Background . Измените координаты на (0, 0, 0) .

Фон установлен

Создайте копию фона и поместите его в (20, 0, 0) . Это должно отлично подойти к первой части.

Фон 2

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0 . И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить "Z" наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Сортировка списка слоев

Давайте добавим несколько слоев под наши нужды (используйте кнопку + ):

Добавить сортировку слоя в Unity

Добавьте фоновый слой к вашему спрайту фона:

Установить сортировку слоя

Настройка Order in Layer - это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:

Спрайты для платформ

Как видите, мы поместили две платформы в один файл. Это хороший способ научиться обрезать спрайты с помощью новых инструментов Unity.

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку "Текстуры"
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените "Sprite Mode" на "Multiple"
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне ( Sprite Editor ) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:

Редактор спрайтов

Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

Автоматическая нарезка

Unity найдет объекты внутри изображения и будет нарежет их автоматически. Вы можете установить дефолтное значение для точки вращения или минимальный размер каждого фрагмента. Для простого изображения без артефактов, это необычайно эффективно. Тем не менее, если вы используете этот инструмент, будьте осторожны и проверьте результат, чтобы убедиться, что вы получили то, что хотели.

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2 . Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:

Результат редактора спрайтов

Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1 . Потом повторим эти действия для platform2 . Поместите их в объект 1 - Middleground . Убедитесь, что их позиция по оси Z равна нулю.

Две новые платформы

Prefabs (Префабы)

Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :

Префабы

Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:

соединение префабов

Заметка о кнопках "Prefab": При последующей модификации игрового объекта, вы можете использовать кнопку "Apply", чтобы применить эти изменения к Prefab , или кнопку "Revert", чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка "Select" переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).

Создание префабов с объектами-платформами упростит их повторное использование. Просто перетащите Prefab на сцену, чтобы добавить копию. Попробуйте добавить другую платформу таким же образом.

Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).

На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.

Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:

Слой Позиционирование по оси Z
0 - Задний фон 10
1 - Средний фон 5
2 - передний фон 0

При переключении из 2D режима в 3D, в окне "Scene" (Сцена) вы будете четко видеть слои:

Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.

В следующем уроке:

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

Итак, строительство базы в стратегии. Параметры, которые участвуют в этом процессе могут самые разные. Возможно золото или минералы, доступность энергии и прочее. В каждом проекте может быть что-то индивидуальное, однако, общее для всех это само строительство, то есть, расстановка объектов в определенной области. Что нам нужно сделать? Во-первых, у нас есть набор иконок, каждый обозначает некую постройку. При клике по иконке, получаем заготовку постройки, которую можно двигать по плоскости XZ. Во-вторых, нужно сделать так, чтобы новые здания нельзя было создать там где уже есть постройка и там, где запрещено строить что-либо.

Данный вариант подходит только для 3D, для двухмерного проекта надо переделывать рэйкаст и плоскость движения объектов.

Подготовка. Создание самих строений, модельки зданий. Как они будут анимированы и прочее - не важно, главное моделька должны быть под коллайдером, это необходимо не только для строительства, но и для создания карты навигации ботов. Например:

Строительство базы / расстановка объектов [RTS]

Коллайдер должен закрывать весь объект.

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


Точно также, объект должен закрываться коллайдером, но в режиме Is Trigger. При этом коллайдер макета можно сделать чуть-чуть больше чем у оригинала, на +0.1 допустим, это повысит чувствительность и гарантирует, чтобы невозможно было создать один объект поверх другого. У всех макетов должен быть установлен слой Ignore Raycast! Дополнительно на модельку вешаем Rigidbody и выключаем гравитацию. Плюс, вешаем небольшой скрипт MaskControl:

Задача этого скрипта в том, чтобы определять где можно установить объект, а где нет. В переменной respawnTag мы указываем тег, который разрешает установку. Допустим если сделать плоскость с тегом, то здание можно строить только в этой области, а если объект наткнется на другие строения то автоматически заблокируется. В общем всё как и обычной стратегии.

Далее, имена строений. Оригинальные префабы зданий именуются вот так id_xxx, то бишь - номер, нижние подчеркивание, имя. Префабы макетов, именуются точно также, номера оригинала и макета - должны совпадать, а имена могут различаться.

Теперь вешаем на пустой объект скрипт DragAndDrop:

original - массив всех префабов с оригинальными моделями построек.

mask - массив всех префабов макетов.

shift - сдвиг по оси Y для модельки.

respawnTag - тег плоскости на которой разрешено строительство.

На сцену нужно добавить несколько UI элементов, точнее иконки, GameObject > UI > Image. Создаем нужное количество иконок, размещаем как нужно. Затем, на каждую иконку надо добавить компонент Event Trigger, выбрать в нем функцию Pointer Click а потом перетащить в активное поле объект со скриптом DragAndDrop и меню выбрать функцию скрипта - SetMask и указываем номер макета. Например:


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

ЛКМ по иконке - получить макет здания. Повторный ЛКМ - установить здание. ПКМ - отмена. Колесико мыши - вращать.

Как создать игру на Unity

Программирование и разработка

Как создать игру на Unity

Из этой статьи вы узнаtте, как начать создавать игру с помощью Unity, начиная только с идеи. Кроме того, вы изучите хороший метод запуска для создания игр Unity 2d с нуля.

Важно отметить, что это руководство не сделает из вас полноценного разработчика Unity и не научит программировать. Однако это поможет вам быстро заставить что-то работать на экране.

Unity — один из самых популярных доступных бесплатных игровых движков. Он также имеет отличный 2D-движок, поэтому 3D-модели не нужны. Ещё одной привлекательной особенностью Unity является то, что он не требует обширных знаний в области программирования.

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

Ниже приведено пошаговое руководство по созданию 2D-игры в Unity для начинающих.

Шаг 1. Идея

идея

Шаг первый довольно прост. Вы легко можете сделать это в уме.

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

  • Это платформер, игра с видом сверху или, может быть, изометрическая?
  • Какая будет тема и основная история?
  • Как это будет выглядеть?
  • Какой движок вы будете использовать?
  • Главное, чем ваша игра будет выделяться? Какую новую механику или идею он представляет или что будет хорошо?

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

Для начала сделаем платформер. В этом примере особое правило платформеров состоит в том, что игрок должен управлять двумя персонажами одновременно, чтобы решать головоломки, а персонажи должны встретиться, чтобы пройти уровень.

Как только у вас появится несколько идей о том, что делать, у вас будет руководство, с которого можно начать. Теперь можно переходить к прототипированию.

Шаг 2. Получите инструменты

Чтобы создать игру в Unity, вам понадобится Unity. Вы можете скачать персональную версию здесь . Имейте в виду, что личная версия необходима только в том случае, если вы не получили более 100 тысяч долларов для финансирования или дохода от своей игры.

Получите инструменты

Мы используем Unity версии 2019.2.14f1

Вы также можете создавать графику для своей игры. Поскольку Unity использует пиксельную графику , я настоятельно рекомендую использовать GraphicsGale . GraphicsGale бесплатна, проста в использовании и обладает множеством функций. Однако вы можете свободно использовать любой удобный вам редактор, будь то Photoshop, Blender или Windows Paint.

Шаг 3. Настройте свой проект

Пока Unity устанавливается, вы можете потратить время на подготовку некоторых своих ресурсов. Вам понадобится некоторая замещающая графика, называемая заполнителями, чтобы вы могли видеть, что вы делаете. Чтобы нарисовать все анимации вашего персонажа, врагов и окружающую среду, потребуется время, поэтому вы можете начать работу с простой графикой.

Для этого шага мы используем GraphicsGale, но вы можете использовать любой редактор, который вам нравится. Начните с того, что сделайте замену стен в игре. (Помните, вы всегда можете сделать больше позже.) Стены должны быть размером 100 на 100 пикселей.

Вот пример

Сделайте что-нибудь быстрое и лёгкое, чтобы представить элементы нашей игры.

После завершения загрузки Unity вы можете открыть Unity Hub и начать новый проект. Назовите проект как хотите, но не забудьте выбрать 2D для настройки проекта.

Обязательно используйте 2D-шаблон

Обязательно используйте 2D-шаблон.

Настройте свой проект2

В Unity есть невероятная функция под названием Unity Asset Store. Asset Store полон готовых фрагментов игры, таких как модели, текстуры, утилиты или программы AI. Они доступны для продажи, а некоторые даже предлагаются бесплатно. Из-за этого легко создать игру, не создавая слишком много ресурсов самостоятельно. Вы можете просто взять заранее запрограммированную игровую механику и прикрепить её к собственному арту.

Настройте свой проект3

Загрузите стандартные ресурсы из Unity Store.

Вам также понадобятся некоторые инструменты для создания 2D-игр в Unity, которые вам немного помогут. Перейдите по этой ссылке и загрузите Git в виде zip-архива. Затем разархивируйте и перетащите папку внутри в обозревателя ресурсов. Возможно, вам придётся перезапустить Unity после этого, чтобы он работал правильно.

Теперь у вас должно быть всё необходимое для начала работы.

Настройте свой проект4

Шаг 4. Создайте карту

Создайте карту

Вы также захотите добавить свою иллюстрацию-заполнитель в браузер ресурсов. Просто перетащите всю папку из окон в обозревателя ресурсов.

Создайте карту2

Ваша новая палитра плитки, там ещё ничего нет.

Чтобы добавить искусство в палитру, просто перетащите свой заполнитель для блоков уровня в окно выше.

Затем создайте что-нибудь для рисования с помощью палитры. В окне Hierarchy щёлкните правой кнопкой мыши и выберите 2D Object> Tilemap.

Создайте карту3

Щёлкните здесь правой кнопкой мыши, чтобы создать карту листов.

Теперь у вас должна быть возможность рисовать на своём уровне. Постарайтесь пока держать его в пределах границ камеры и добавить несколько платформ, на которые можно прыгать.

Создайте карту4

Наконец, нужно позаботиться об одном последнем шаге. Прямо сейчас ваша карта — это только визуализация, и ваш персонаж не будет сталкиваться со стенами, которые вы построили. Фактически, ваш персонаж провалится прямо сквозь пол. Вы должны добавить свойство физики, чтобы игра знала, что эти квадраты имеют значение, и они созданы не только для того, чтобы красиво выглядеть.

Создайте карту5

Компонент, который вам нужно добавить, называется Tilemap Collider 2D. Просто воспользуйтесь окном поиска, чтобы найти его и добавить на карту листов.

Шаг 5. Сделайте персонажа

Сделайте персонажа1

Помните, как к вашей тайловой карте был прикреплён компонент столкновения? Что ж, нашему персонажу нужно много компонентов, прикреплённых к нему, чтобы функционировать. Вместо того, чтобы каждый раз перестраивать каждый компонент, вы можете создавать префабы, которые будут служить игровыми объектами. Их можно использовать снова и снова.

Теперь перетащите мальчика-робота в свою сцену и щёлкните по нему в иерархии. Глядя на все компоненты, прикреплённые к нему, вы заметите, что у него есть система анимации, средство рендеринга спрайтов и несколько различных функций столкновения и управления.

Сделайте персонажа2

У него есть система анимации, средство визуализации спрайтов и несколько различных функций управления столкновениями и контроля.

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

Сделайте персонажа3

Поскольку идея игровой механики в этом уроке состоит в том, чтобы встретить двух персонажей, вам следует перетащить в сцену второго мальчика-робота, возможно, с другой стороны. Таким образом, каждый раз, когда вы играете в игру, вам придётся координировать свои действия, чтобы встретить двух персонажей.

Шаг 6. Дорожная карта и сборка

Дорожная карта — один из многих шагов, которые вы можете предпринять отсюда. Теперь, когда у вас есть прототип, вся трудоёмкая работа по настройке выполнена.

Например, ваша дорожная карта может выглядеть примерно так:

  1. Добавить систему монет.
  2. Добавить здоровье и урон игрока.
  3. Основные враги.
  4. Проверка ошибок.
  5. Улучшить базовое искусство.
  6. Создавайте игровые сценарии и выигрывайте.
  7. Добавить элементы пользовательского интерфейса.
  8. Добавить систему меню.

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

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

Заключение

В этом руководстве вы познакомились только с началом создания игры. Остальное зависит от вас. У Unity есть активное сообщество, и существует множество обучающих ресурсов, которые выходят далеко за рамки этого простого игрового руководства. Некоторые из лучших учебных ресурсов включают в себя кодирование или дизайн игры Bootcamps. Путь к тому, чтобы стать разработчиком игр, начинается с вашей первой игры, какой бы простой она ни была.

На игровой платформе Unity уже давно создаются сотни игр с распространёнными жанрами как: гонки, экшен, логические, RPG и другие. Также на данном движке разрабатываются программы для разных ОС:

  • Windows и Windows Phone;
  • Linux;
  • Mac OS;
  • IOS и Android;
  • Браузерные игры, которые работают при поддержке плагина Unity Web Player и т.д.

Гоночный платформер от Unity

В целом игра или приложение, независимо от того где она будет использоваться на ПК или смартфоне, состоит из комбинаций компьютерных инструкций и данных, позволяющая АВС (Автоматическая Вычислительная Машина) выполнять вычисления или функции управления, которые соответствуют определённому языку программирования. В этом и есть суть реализации потенциала и накопленной фантазии в создание своего проекта.

Подготовка рабочего места и поиск предметов игры

Трасса для платформера 2D

Далее делаем вход и настройку системы:

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

Выбор компилятора проекта

Подготовление основы

Сцена готова, начинаем задавать значения нашим объектам в Инспекторе:

  • Кликаем на картинку дороги и меняем значение на Texture в меню Инспектор – Texture Tabe;
  • Что бы текстура повторялась, для нашей игры выбираем Wrap Mode – Repeat, остальные свойства оставляем и нажимаем Apply;
  • Трек состоит на основе 3Д объекта Quad, его можно выбрать в меню Create – 3D Object, после растягиваем его по размерам выбранной игровой области и перетягиваем картинку дороги на Quad;

Изменение свойств трассы

Так как предметы сцены притемнены, добавляем объект Direction Light. Это так называемый источник света. Он создаёт вид солнца, предоставляя возможность осветить вид на сцене и добавить теней, для лучшего контраста.

После нужно задать нашей дороге функцию движения, для того прописываем новый скрипт:

Скрипт MoveTrack

Перетаскиваем машинку на сцену и выставляем её размеры, и расположение для удобного пользования, при этом задаём в строке название Player.

Скрипт PlayerController

Добавление оппонентов

В сети нужно подыскать схожую по параметрам ещё одну машинку и перенести её в среду Unity. Добавляем компоненты:

Читайте также: