Как создать игру на компьютере самому с нуля unity

Обновлено: 03.07.2024

Unity — это среда, которая позволит детям почувствовать себя настоящими разработчиками игр! На движке Unity 3D ребята могут создавать анимацию, запрограммировать игровую сцену и полноценные игры. А также познакомиться с языком программирования "Си шарп", на котором в Unity пишутся скрипты.

Школа программирования для детей "Пиксель" подготовила бесплатные уроки Unity 3D, которые познакомят детей с программой и научат создавать первые игры. Поддержите нас, ставьте палец вверх, если наш бесплатный курс по Юнити окажется полезным для ваших детей.

Как скачать Unity 3D на ПК

Для начала скачаем и установим программу на компьютер.

Урок 1. Как сделать анимации в Unity 3D

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

Урок 2. Как сделать телепорт в Unity 3D

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

Урок 3. Как сделать спавн объектов в Unity 3D

Мы изучим 2 способа создания спавна объектов: на канвасе (canvas) и в пределах камеры. А еще узнаем, как создавать префабы.

Урок 4. Триггеры в Unity 3D | Столкновение персонажей

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

Урок 5. Как создать таймер в Unity 3D

Таймер нужен для почти любой игры, мы научимся создавать его с помощью корутины (Coroutine) и команды InvokeRepeating.

Урок 6. Перемещение объекта мышью в Unity 3D

Функция Mouse Drag или, по-другому, метод перетаскивания нужен для того, чтобы перетаскивать объекты в игре. Например, как мы показываем в видео, чтобы перемещать еду на персонажа и кормить его.

Урок 7. Как сделать полосу здоровья персонажа в Unity 3D

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

Урок 8. Как сохранить игру в Unity 3D

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

Урок 9. Создаем игру "Раннер" в Unity за 30 минут

Время повторить пройденное! Мы сделаем классический «Раннер» и закрепим изученный материал: запрограммируем движение героя, создадим препятствия (используя триггеры), сделаем спавн объектов и даже сделаем плашку с жизнями.

Урок 10. Как экспортировать игру из Unity на ПК или Android (как настроить для Play Market)

В этом видео расскажем, как собрать игру под ПК или под Android: в каком порядке собрать сцены, какие им дать номера, а еще какие настройки нужны, чтобы загрузить игру Play Market.

Урок 11. Как загрузить игру в Play Market

Мы собираем игру и заполняем все настройки для Play Market. Теперь другие пользователи смогут сыграть в вашу игру, а вы будете на этом зарабатывать.

Урок 12. Как сделать прыжок в Unity 3D

В этом уроке мы разберем, как сделать прыжок персонажа в 2D- и в 3D-проекте. Для этого мы создадим две сцены, напишем скрипты на языке Си Шарп.

Урок 13. Как управлять персонажем в Unity 3D

Давайте научим нашего персонажа двигаться. Для этого мы зададим переменные типа float, они будут отвечать за скорость, поворот и перемещение по горизонтали и по вертикали. И, конечно, напишем скрипты для 2D- и 3D-версии игры.

Урок 14. LineRenderer в Unity 2D

LineRenderer позволяет упростить рисование линий. В этом видео мы напишем два скрипта: Line Point позволит проводить прямую линию между любыми двумя точками, а с помощью Draw Line мы сможем рисовать неотрывную линию.

Урок 15. Как сделать автосимулятор в Unity 3D | Как сделать гонки в Unity 3D

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

Наши плейлисты регулярно пополняются, подписывайтесь на наш YouTube-канал , чтобы следить за выходом новых видео и открывать для себя мир IT-технологий!

Если же вам нужен наставник, загляните в Школу программирования для детей “Пиксель”: запишитесь на полный курс по разработке игр на движке Unity 3D .


Эксперт в медицинских тренажерах VR на Unity, физических симуляциях и сетевых играх.

Что такое Unity

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

Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — Genshin Impact, успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.

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

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

Как создать простую игру

При создании собственного проекта важно помнить, что разработка кода — это примерно 20% игры; гораздо большее значение в ней имеют другие аспекты:

  • Геймплей — это общее понятие взаимодействия игрока с игровым миром, которое определяет его действия (бежать вперед, преодолевать препятствия, стрелять по мишеням, обгонять других) и цели (прийти первым к финишу, выбить 10 из 10, победить врага в бою, собрать как можно больше монет). Геймплей напрямую связан с жанром игры, так как у каждого из них есть специфичный набор правил и механик.
  • Игровые механики— конкретные элементы взаимодействия с игрой, которые входят в состав геймплея. Стрельба — это одна механика, сражение на мечах — другая, гонка — третья. Одна игра может сочетать в себе десятки таких механик.
  • Сюжет— это развитие действия в игре; он одинаково важен и для масштабных AAA-проектов, и для небольших, но глубоких инди-игр. Сюжет должен затянуть игрока, рассказать ему историю, а также развивать персонажей, чтобы они не оставались однобокими и раскрывались для игрока с новых сторон.
  • Персонажи — в них важны и дизайн, и характер. Удачно проработанный персонаж обладает узнаваемыми особенностями поведения, интересной историей, а еще для полного погружения он должен иметь что-то общее с игроком, что зацепит его и заставит сопереживать. На эту тему Unity разработали гайд «Пять типов привлекательных игровых персонажей», чтобы у новичков получалось сделать игрового персонажа правдоподобным.
  • Дизайн уровней— это внешний вид игры, цветовые решения, общая стилистика объектов, фона, персонажей, предметов, которая создает определенное настроение. В помощь начинающим разработчикам Unity опубликовали в своем блоге «Советы по дизайну уровней вашей первой видеоигры».
  • Баланс — это соотношение характеристик разных объектов, он тоже отвечает за увлеченность игрока. Например, если меч в игре может наносить объекту 3 единицы урона, а объект имеет всего 3 HP (hit points — величина, обозначающая максимальный урон), то его можно уничтожить с первого раза, и играть будет слишком легко. Если объект имеет 30 HP, то игроку придется нанести 10 ударов, чтобы его уничтожить. Такое уже подходит скорее для босса, например на первом или втором уровне. Разработчику важно грамотно распределить эти величины, чтобы игра была увлекательной и бросала игроку вызовы.

Разработчик игр на Unity

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

После нажатия кнопки «Начать» откроется Unity Store. Для новых пользователей в нем есть вариант установки движка с обучающим руководством. С помощью кнопки «Начните здесь» скачивается установщик UnityHubSetup.exe, который запускается как любой другой установщик: нужно просто открыть файл, принять условия пользовательского соглашения и нажать кнопку «Установить».

Русского языка в настройках нет, так что придется совершенствовать технический английский. Всего Unity занимает 11,3 Гб,поэтому перед установкой лучше проверить свободное место на диске и почистить его при необходимости.

Следующий шаг — создание Unity ID. Можно регистрироваться с помощью почты или использовать предложенные аккаунты, например Google, Facebook или Apple. Важно поставить первые две галочки: согласие с условиями использования Unity и признание политики конфиденциальности. Третья галочка — это согласие на маркетинговые рассылки, ее ставить не обязательно.


После регистрации Unity предложит создать тестовый проект Microgame. На выбор предлагается пять шаблонов:

  • LEGO Microgame;
  • шутер от первого лица;
  • картинг;
  • платформер;
  • пустой 3D-шаблон.

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

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

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

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

Настройка интерфейса

В стандартном интерфейсе проекта шесть элементов рабочей области:

  1. Верхняя панель инструментов— в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
  2. Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
  3. Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
  4. Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
  5. Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
  6. Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.


Добавление объекта

Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.

В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.

Как и другие ассеты, он загружается с помощью кнопки Import.

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

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

Шаг 2. Перенести в область Scene


Работа со скриптами

За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.

Базовые элементы скриптов — это:

  • using — элемент в коде, который подключает библиотеки;
  • public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
  • void — те самые функции, с их помощью прописываются действия, происходящие в игре.

Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).

И можно заметить, что в консоли это слово выводится один раз.

Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.

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

Настройка триггеров

Для понимания сути триггеров важно усвоить, что такое коллайдер (Collider). Это компонент, который присваивается объекту в пространстве игры, задает форму и делает его твердым, недоступным для прохождения сквозь него. Например, если мы разместим монетку в 2D-пространстве и захотим сделать так, чтобы она упала на платформу, то без использования компонента Collider ничего не получится — монетка пролетит сквозь платформу.

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

Так объекты обязательно соприкоснутся и монета встанет на платформу.

Триггер (Trigger) — это пространство на карте, при попадании объекта в которое происходит действие; он тоже обводит объект или область в пространстве по краям. По сути, это тот же коллайдер, только триггер позволяет объектам проходить внутрь этой области. Представьте, что на ту же самую платформу вместе с коллайдером наброшен триггер, и при попадании персонажа внутрь триггерной области активируется телепорт — персонажа перебрасывает в другую точку карты.

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


Триггеры распознают три варианта взаимодействия области на карте и объекта:

  • OnTriggerEnter — объект зашел в зону;
  • OnTriggerStay — объект находится в зоне;
  • OnTriggerExit — объект покинул зону.

Что дальше?

Освоить интерфейс Unity довольно легко, в интернете есть разные гайды на тему того, как сделать это действительно быстро. Например, видео «Я сделал игру на Unity за неделю» или обучающий мини-курс «Как создать RPG за час». Можно изучать геймдев самостоятельно или начать обучение на курсе — это ускорит процесс и даст более заметные результаты.

Разработчик игр на Unity

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


Unity — это один из самых популярных движков на данный момент. Составить ему конкуренцию может разве что Unreal Engine 4, но что у первого, что и у второго есть свои плюсы и свои минусы. Unity поддерживает почти 30 платформ, в их числе мобильные, виртуальная реальность, настольные компьютеры, консоли и так далее. Unity — это не просто хороший вариант для старта, это идеальный вариант для старта! Тут заложено использование гибкой модульной системы при создании сцен и персонажей в игре. Даже новичок способен создать крутой проект, используя готовые спрайты и конструктор движка.

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

Так с чего же начать работу на Unity и реализацию своего проекта?

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

Если вам интересно, вот что означают эти три варианта:

Unity Personal: эта версия бесплатна. Однако ваша компания должна зарабатывать менее 100 000 долларов за финансовый год. Еще одна загвоздка в том, что в каждой игре будет отображаться заставка «Сделано Unity», которую нельзя удалить.

Unity Plus: эта версия стоит 35 долларов в месяц. Он поставляется с инструментами отчетности о производительности, оболочкой Unity Pro и некоторыми дополнительными функциями. Эта версия требует, чтобы ваша компания зарабатывала менее 200 000 долларов в год, и она позволяет отключать или настраивать заставку «Сделано Unity».

Unity Pro: это самый высокий доступный уровень. Он стоит 125 долларов в месяц и поставляется с полезными сервисами Unity, профессиональными надстройками для iOS и Android и не имеет заставки. Ограничения по доходу тоже нет.

Также можно присмотреться к версии Enterprise, где стоимость подписки определяют пользовательские потребности.

Самые явные различия представленных версий — это то, что в Enterprise игры должны начинаться с заставки Unity. А в платных версиях можно удалить или загрузить другую заставку.

Плюс есть довольно интересные сервисы в Unity, к примеру, Cloud Build и Analytics. Естественно, они существуют только в платных версиях.

Также у движка есть свои правила, как можно использовать бесплатную версию. Рекомендую прочитать FAQ .

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


Первым установится Unity Hub

Unity Hub — это автономное приложение, которое упрощает процесс поиска, загрузки и управления вашими проектами и установками Unity.

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

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

Чтобы создать новый проект (и указать, в какой версии редактора его открыть), выполните одно из следующих действий:

Щелкните кнопку New. В строке заголовка диалогового окна «Новый проект» отображается версия редактора, которую должен использовать проект.

Щелкните стрелку раскрывающегося списка рядом с кнопкой «Создать», чтобы выбрать версию редактора, которую вы хотите использовать. Примечание: это раскрывающееся меню доступно только в том случае, если вы установили несколько версий редактора в хабе.

Вкладка "Проекты"


Чтобы просмотреть проекты, которыми управляет хаб, щелкните значок Проекты

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

Изучение интерфейса

Когда ваш проект загрузится, появится экран, заполненный информацией.

Ваш макет, вероятно, будет выглядеть так:


Если нет, нажмите кнопку «Макет» в правом верхнем углу и выберите 2 на 3 в раскрывающемся меню.


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

Вот как выглядит интерфейс, разбитый на отдельные представления:


Чтобы просмотреть список всех представлений, щелкните параметр «Окно» в строке меню.


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

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

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


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

Нажмите и удерживайте на вкладку Профили и перетащите его на вкладке Сцена выше.


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

Чтобы сохранить макет, выберите «Окно \ Макеты \ Сохранить макет…» и назовите его «Отладка».


Всякий раз, когда вам нужно получить доступ к этому конкретному макету, вы можете нажать кнопку «Макет» и выбрать «Отладка».


При нажатии вы увидите список всех ваших макетов.


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

Организация активов

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

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

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

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


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

В Диспетчере проектов выберите папку Assets и нажмите кнопку Create. В раскрывающемся меню выберите «Папка» и назовите ее «Модели». Это будет дом для всех ваших моделей. У вас может возникнуть соблазн создать папки и манипулировать файлами в файловой системе вместо обозревателя проекта. Не делайте этого!

Unity создает метаданные для каждого актива. Создание, изменение или удаление ресурсов в файловой системе может нарушить эти метаданные и вашу игру.

Создайте следующие папки: Animations, Materials, Prefabs, Presets, Scripts и Textures.

Ваш обозреватель проекта должен выглядеть так:


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


Примечание. Все снимки экрана в этом руководстве с этого момента будут отображать самые маленькие настройки.

Наконец, вы можете изменить название актива. Например, ваша текущая сцена называется SampleScene. Выберите папку Scenes, а затем выберите файл SampleScene. Имя будет выделено. Один раз щелкните по нему еще раз, и вы напишете новое имя. Измените его на Main.


Вы можете сделать это с любой папкой или активом в Диспетчере проектов.


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

Если вы хотите получить более систематическое образование в области разработки игр, мы рекомендуем рассмотреть факультет разработки игр онлайн-университета GeekBrains.

Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.

За последние годы вышло много популярных двумерных игр:

    – продолжение серии игр в жанре beat ’em up, файтинг; – игра в жанре «ферма», менеджмент; – игра в жанре «ужасы», метроидвания ; – игра в жанре «квест», головоломка; – игра в жанре beat ’em up, файтинг.

Программная реализация 2D-игр проще не только из-за отсутствия третьего измерения: на самой сцене меньше объектов, вместо трехмерных моделей плоские спрайты, вместо скелетной анимации – покадровая. А еще 2D-игры проще портировать на другие платформы – легче найти новую аудиторию.

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

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

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

В первую очередь создадим новый проект и откроем его настройки (Edit → Project Settings). Во вкладке Editor установим параметр Default Behaviour Mode в значение 2D

Настройка проекта Детальная настройка проекта

Следующим шагом сохраним текущую активную сцену, назвав ее, например, Scene1. Теперь создадим основные игровые объекты: ракетку, мяч и менеджер игры, в котором будет храниться основная логика игры.

1. Создаем пустой объект, переименовываем в GameManager.

Создаем пустой объект

Создаем пустой объект

3. Создаем квадратный спрайт, называем его Pad (Assets → Create → Sprites → Square). Аналогично создаем круглый спрайт Ball (Assets → Create → Sprites → Circle). Масштабируем спрайт Pad со следующими параметрами – x:0.5, y:2.5, z:1.

Создаем спрайты

Создаем спрайты

4. Создаем префабы для Pad и Ball, после чего добавляем к ним компонент Box Collider 2D (включаем параметр Is Trigger) и компонент Rigidbody 2D (выставляем параметр Body Type в значение Kinematic).

Добавляем .компонент Box Collider 2D Настраиваем.компонент Box Collider 2D Добавляем компонент Rigidbody 2D Масштабируем спрайты

6. Заполняем скрипты следующим кодом.

GameManager.cs Ball.cs Pad.cs

6. Добавляем к префабу Ball и Pad теги с аналогичными именами. Выделив префабы, в инспекторе мы можем видеть выпадающий список тегов. Там же расположены и кнопки для добавления и редактирования тегов.

7. В настройках камеры выставляем параметр Projection в значение Orthographic, а параметр Clear Flag – в значение Solid Color.

Настройка камеры

Настройка камеры

8. Настраиваем кнопки, как показано на следующих скриншотах (Edit → Project Settings → Input Manager).

Настройка ввода, основное Настройка ввода, первый игрок Настройка ввода, второй игрок

Вот и всё, игра готова!

Пинг-понг, итоговый результат

Пинг-понг, итоговый результат

Билд для платформы Windows

1. Официальный туториал от Unity, где детально рассмотрен процесс создания roguelike RPG.

2. Youtube-канал Brackeys , где можно найти серию видеоуроков по созданию 2D-платформера.

3. Youtube-канал N3K EN содержит множество уроков как по отдельным компонентам Unity, так и полноценные серии уроков по созданию игр с нуля.

Больше полезной информации вы найдете на наших телеграм-каналах «Библиотека программиста» и «Книги для программистов».

Если у вас мало опыта в разработке игр на Unity, мы рекомендуем обратить внимание на факультет разработки игр GeekBrains . Материал хорошо структурирован и содержит все необходимое для того, чтобы стать профессиональным Unity-разработчиком.

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

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

Не так давно был объявлен Народный Джем с призовым фондом 131 000 рублей.
Такие события часто притягивают как совсем ничего не умеющих новичков, так и опытных разработчиков и в этом году мы, школа ЯЮниор решили поддержать джем!

Наша школа стала одним из спонсоров народного геймджема, мы учредили 2 номинации:

25 000 рублей за лучшую игру на Unity
25 000 рублей за лучший код на Unity

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

Мы хотели бы немного помочь самым начинающим ребятам и выпустить статью о том, как же собрать самую простую игру в Unity

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

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

Давайте приступим к разработке

Первым делом мы скачиваем графический пакет и переносим все файлы из папки Spritesheets(папка в архиве с графикой) в наш проект. Все файлы вашего проекта хранятся в папке Assets(находится в корне проекта если искать через проводник), в окне Project.Чтобы не захламлять папку ассеты разношерстными файлами мы стараемся всё структурировать, к примеру для графических файлов мы создадим папку Sprites, а уже в неё простым перетаскиванием мыши закидываем наши спрайты.

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

Давайте посмотрим, в каком виде у нас спрайты.

Это атлас, он удобен при разработке, он экономит место, но его следует ещё подготовить. Чтобы пользоваться каждым спрайтом по отдельности его нужно нарезать. Для этого мы нажимаем ЛКМ по атласу, в окне Inspector теперь отображается информация о выбранном файле

Чтобы его нарезать, мы сменяется Sprite Mode с Single на Multiply и нажимаем кнопку Apply, тем самым разрешая нарезку атласа.

Теперь нажимаем кнопку Sprite Editor, у нас открывается окно для нарезки атласа. Для того, чтобы автоматически нарезать атлас на спрайты вы можете нажать Slice в верхней части окна.

Не забудьте нажать Apply

Если вы всё сделали правильно, то около атласа в окне Project появится стрелочка и раскрывающийся список, в котором видно видно все ваши спрайты.

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

Переходим к окну Scene и переводим камеру в 2D режим

Теперь вы можете просто перетаскивать нужные спрайты из окна проекта на сцену и они на ней появятся.
Но и тут нужно подходить с умом, на нашей сцене будет множество различных элементов и потом будет трудно среди всех ориентироваться, для этого мы всё будем структурировать. В окне Hierarchy отображаются все объекты на нашей сцене, нажам ПКМ по этому окну мы создаем новый пустой объект, назовем его Background.

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

Давайте начнем с заднего фона.Перетащите спрайт задней стены на сцену, у вас появился небольшой квадрат.Он очень мал, чтобы покрыть всю сцену, если его потянуть, то он теряет качестно, но и создавать много таких квадратов — это захламление. В этом случае мы можем сказать, что отрисовывать этот спрайт стоит не как обычную картинку, а как повторяющийся спрайт!Для этого выбираем лкм нужный объект и в окне инспектора Draw Mode сменяем на Tiled.

Теперь при растягивании ваша текстура будет повторятся, тем самым вы создадите задний фон.

Таким же образом следует создать траву и воду, ведь они тоже повторяются!Во время построения следите за слоями, каждый отдельный объект находится на определенном слое, слои — это Order In Layer.

Он нужен для четкого указания того, на какой позиции он должен стоять. К примеру, фон — это самый дальний объект, он должен стоять позади всех, по этой причине порядок на слое у него будет 0.Трава уже идет выше стены, слой у неё будет 1, чтобы она всегда была выше, далее будет 3 уровня воды, и у них будут слои 2,3,4, чтобы каждый четко шел за следующим.

В итоге у вас должна получиться похожая картина.

Это почти готовый тир, теперь давайте сделаем мишени.

Первым делом создаем пустой объект, назовем его Target, он будет хранить нашу цель. Далее создаем ещё один пустой объект внутри Target, назовем его Base. Он нужен для будущей анимации.Далее в него уже помещаем деревянную палочку, на которой будет стоять мишень и уточку на эту палочку, чтобы вид получился следующий.

Наша мишень почти готова, нам осталось добавить ей заднюю часть, чтобы её можно было первернуть выстрелом. Для этого добавляем заднюю часть дочерней к самой уточке, оставляем их на 1 слое, но заднюю часть сдвигаем чуть назад(можете вернуть сцену в 3d для просмотра)

Таким образом мы сможем перевернуть нашу мишень при удачном выстреле.Чтобы уточку можно было создавать множество раз, нужно сохранить её как префаб(шаблон), для этого просто из окна иерархии перетащите корневой объект уточки в окно проекта, в специально обозначенную папку(Prefabs), теперь вы всегда можете вновь создать уточку просто перетащив её из окна проекта.

Наша мишень имеет различные состояния. Она может быть спрятана и находиться под водой, она может всплыть и её могут выбить. Для всех этих состояний нужны анимации и вы сможете их сделать.

Нам нужно открыть окно анимаций, для этого нажмите Window → Animation →Animation

Откроется окно, в котором вам предлагают создать аниматор. Сначала нажимаете на объект, который хотите анимировать, а потом нажимаете Create и выбираете куда вы хотите сохранить вашу первую анимацию.

Моя первая анимация — Show, она будет проигрываться при показе уточки.Всё анимированние в Unity работает на изменении различных полей, к примеру на изменение положения, поворота или размера.

Мы хотим показать, что уточка появилась, для этого нужно, чтобы она из какой-то нижней координаты, к примеру -1 всплыла вверх, в координату 0.Это изменение положения, значит нажимаем кнопку Add Property.

Как вы можете заметить, тут видна вся иерархия нашей уточки, мы выбираем Base и Position. Зачем такие сложности? Дело в том, что если мы будем анимировать базовое положение, а не то, которое внутри нашего контейнера, то все наши уточки будут принимать одну позицию в мире. А в данном случае у нас получается, что уточка проигрывает все эти анимации внутри коробочки и это очень комфортно.

После добавление у нас появились отметки на шкале и значения. Отметки на шкале это и есть анимация. Первые ромбики — это её начало. Я выставляю в самом начале координату по y в -1.3, после мышкой тыкаю на последние ромбики и устанавливаю 0.Получается, что за 1 секунду(сверху на шкале есть время, вы можете двигать ромбики по этой шкале, чтобы изменять длительность анимации) у меня уточка с -1.3 поднимется до 0. Тем самым сделав анимацию всплытия.

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

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

Для выбивания уже интереснее, мы будем анимировать сразу по 2 полям, по повороту и положению.

Сначала мишень повернется на 180, а после уплывет с 0 на -1.3, тем самым исчезнув.

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

Обратите внимание, что на вашей уточке появился новый компонент, Animator.

Он создался автоматически при создании анимции, 2 раза нажмите на таргет и у вас откроется окно аниматора.

Первым делом, нам нужно указать тут стартовую анимацию, для этого жмем ПКМ по анимации idle и выбираем пункт Set As layer default state.

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

Это то, как анимации будут проигрываться, как они будут переходить от одной анимации, к другой. Остается только настроить переходы.Мы должны перейти в параметры и нажав на + создать 2 триггера, Hit и Show, они будут помогать нам из кода вызвать определенную анимацию.

После создания триггеров мы должны сказать, при каких условиях одна анимация сменит другую. Для этого жмем на белую стрелочку, которая идет от Idle к Show, нажимаем + и настраиваем такое условие. Оно говорит, что анимация перейдет только тогда, когда этот триггер будет включен.

Также следует отключить на всех переходах Has Exit Time для четкости проигрывания.

Переход от Show к Hit будет выглядеть так

А переход снова в Idle трогать не нужно.

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

Готовая утка выглядит так

Для доп практики можете проанимировать движение воды.

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

То, что мы сделали префаб из уточки позволяет нам легко её воспроизвести.

В итоге у нас получилась следующая картина

При запуске все уточки будут под водой, ибо из-за аниматора они не могут всплыть, пока триггер Show не заработает, давайте начнем писать скрипты!

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

Скрипт нужно добавить к каждому из префабов(не на объект на сцене, а на префаб в окне проекта)

Далее напишем скрипт для группы мишеней, чтобы на определенной волне можно было их открыть(группой играет как раз TargetRow, в котором мы объединили уточек)

В этом скрипте при запуске игры мы собираем всех уточек которые содержатся внутри нашего объекта(наши дети) в единый список. Как вы уже видели, все уточки изначально под водой, ибо состояние idle держит их там, а при вызове метода ShowRandomTarget случайная уточка из ряда будет показана.

Этот компонент нужно добавить к объектам, в которых содержатся уточки.

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

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

У нас есть задержка между появлениями show Delay, есть текущее время, current Time, когда текущее время становится больше, чем нужное время для показа, то происходит генерация числа показываемых уток, а после цикл, в котором создастся такое количество уток на разных волнах, после чего время обнуляется.

Этот комопнент мы добавим на новый пустой объект Shooting Gallery и настраиваем следующим образом.

В массив TargetsGroup мы помещаем все 3 волны уточек.

После этого раз в Show Delay секунд будет показываться рандомное количество уток от Min Show Count, до Max Show Count.

Теперь утки показываются, но выбивать мы их ещё не можем.

Чтобы уток можно было выбивать, им нужно добавить физическое тело, для этого переходим к префабу утки и добавляем комопнент Circle Collider.

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

Самый технически сложный код в этом проекте, давайте разберем подробнее.

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

Update же выполняется каждый кадр, каждый кадр мы проверяем — игрок нажал левую кнопку мыши? И если да, то мы запоминаем позицию, где находится мышка игрока, создаем при помощи камеры луч в той позиции, где была мышка и проводим рейкаст. Как это выглядит — мы кликаем мышкой и ровно в том месте вниз летит невидимый луч, он ударяется о колайдер уточки и запоминает его.

Далее идет проверка, если колайдер не равен пустоте и на нем есть компонент Target, то в этом случае мы вызываем у него метод Hit, как вы помните он выбивает нашу уточку. Этот компонет мы можем повесить на пустой объект с названием Shooter. Теперь наши уточки выбиваются)

Осталось добавить только перекрестье, чтобы было удобно целиться(на скринах для удобства оставлял, сейчас добавим и вам:))

Берем спрайт перекрестья и создаем его на сцене, после чего создаем скрипт

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

Этот скрипт добавьте на объект перекрестья и он будет следовать за вашей мышкой всегда)

По сути мы с вами сделали простейший тир, в котором вам нужно выбивать утят)

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

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

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