Вернуться назад


Как создать первую игру на Unity: гайд для новичков



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


Звучит довольно просто? Но это совсем не так. Для начала стоит сказать, что не нужно сразу создавать "мега-гигантский" игровой проект с реалистичной 3D графикой, открытым миром, проработанными персонажами и локациями. Такую игру ты вряд ли сможешь закончить и просто разочаруешься в геймдеве.


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


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


Выбор движка


Далее определимся с движком. На рынке существует множество программ для создания игр (движков), такие как Godot, Source, Unreal Engine, Construct, Unity и многие другие. Cреди них есть как популярные, так и не очень.


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


Графика


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


Далее стоит выбрать формат . У 2D-игр существует 2  основных типа графики, это векторный и пиксельный. Здесь ты волен сам выбирать, что тебе по душе, но стоит помнить, что векторы сложнее в освоении, чем пиксели. Поэтому для начала выберем пиксель арт в качестве стиля графики.


Установка Unity


После выбора движка нужно его установить. Для этого нужно зайти на официальный сайт Unity (unity.com) и нажать кнопку “Скачать”. После этого вас перебросит на страницу установки движка.  Далее скачиваете Unity Hub под свою операционную систему (Windows или macOS). После чего запускаете установщик и следуете стандартной процедуре установки.


При первом запуске Unity Hub будет предложено установить актуальную версию Unity. В разделе Installs можно выбрать конкретную версию движка. Рекомендуем использовать версию с пометкой «Recommended version» — она наиболее стабильна. Установка может занять некоторое время в зависимости от скорости интернет-соединения и выбранных модулей.


Знакомство с интерфейсом


Для того чтобы создать новый проект вам нужно в правом верхнем углу кликнуть на “New Project”.


Далее кликаем на "2D Core", даем имя нашей игре и выбираем папку, в которой наш проект будет храниться. Создание проекта может занять какое-то время, в зависимости от устройства.


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


После создания проекта нас встречает главное окно.


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

· Панель инструментов - обеспечивает доступ к наиболее важным рабочим функциям;

· Панель сцены (Scene View) - основное рабочее пространство, где создаются и редактируются игровые объекты. Здесь можно перемещать, масштабировать и вращать объекты, а также настраивать их свойства;

· Панель игры (Game View) - отображает, как сцена будет выглядеть в реальной игре;

· Иерархия (Hierarchy) - показывает все объекты, присутствующие в текущей сцене, в виде дерева. Здесь можно организовывать объекты, создавая родительские и дочерние связи;

· Инспектор (Inspector) - отображает свойства выбранного объекта. Здесь можно изменять параметры, добавлять компоненты и скрипты, а также настраивать поведение объектов;

· Панель проекта (Project) - показывает все файлы и ресурсы, используемые в проекте. Здесь создавать папки, скрипты, спрайты, а также управлять ресурсами;

· Консоль (Console) - отображает сообщения об ошибках, предупреждениях и другие важные уведомления. Это инструмент для отладки и выявления проблем в проекте.


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


Интерфейс Unity


Разработка игры


Как мы ранее отмечали, не стоит браться за большой проект сразу. Лучше начать с небольшого платформера — это поможет освоить принципы работы в Unity.

Перед тем как начать, создадим папку, в которой будут храниться наши «спрайты» (графический объект в компьютерной графике). Для этого кликаем ПКМ по панели проекта и выбираем Create/Folder. После чего переименовываем папку в Sprites и добавляем туда спрайты игрока и платформы. Спрайтами может являться любая картинка формата .jpg и .png. Сделать это можно просто перетащив в панель проекта наши спрайты.

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


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


Добавление спрайтов на сцену Unity



Добавление спрайтов на сцену Unity


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

1.                    Добавление физики игроку: 

·      Выделите спрайт игрока; 

·      В окне «Инспектор» нажмите Add Component; 

·      Найдите и выберите Rigidbody 2D — это позволит объекту взаимодействовать с физикой (гравитация, силы и т.д.). 

2.                  Настройка коллайдеров:

·  Чтобы объекты могли сталкиваться, добавьте компонент Box Collider 2D как игроку, так и платформам; 

·  Коллайдер определяет границы столкновений, делая взаимодействие объектов реалистичным.


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


Добавление компонентов на спрайты Unity


Теперь можно перейти к написанию кода для нашей игры, для этого кликаем на спрайт игрока и добовляем ему компонент “New script”. Заходим в скрипт и перед нами стандартный класс MonoBehaviour, который мы и будем программировать.


Добавление скрипта на спрайт Unity


Для начала пропишем все нужные переменные.


public class movement : MonoBehaviour
{
   
public float moveSpeed = 5f; // Скорость передвижения
   
public float jumpForce = 7f; // Сила прыжка
   
private Rigidbody2D rb; // Rigidbody для управления физикой

private bool isGrounded; // Переменная для проверки, на земле ли персонаж
// После пропишем функцию Start и Update void Start() { rb = GetComponent(); // Получаем компонент Rigidbody2D }   void Update() {         Move(); // Вызываем метод для передвижения         Jump(); // Проверяем для прыжка }
// Теперь напишем функцию Move, для того чтобы наш игрок смог ходить. private void Move() {     float moveInput = Input.GetAxis("Horizontal"); // Получаем входные данные по оси X для левого и правого движений     rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y); // Устанавливаем скорость по осям }


Далее в Инспекторе спрайта игрока у вас должна появиться возможность редактирования скорости. Для начала поставим 5.

Изменение значения переменной в движке Unity


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


private void Jump()
{
    if (isGrounded && Input.GetButtonDown("Jump")) // Проверяем, можно ли прыгнуть (на земле ли спрайт)
    {
       
        rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse); // Применяем силу вверх
   
   }
}
 
private void OnCollisionEnter2D(Collision2D collision)
{
   
// Проверяем, касаемся ли мы земли
   
    if (collision.collider.CompareTag("Ground"))
   
        {
       
            isGrounded = true;
        }
}
 
private void OnCollisionExit2D(Collision2D collision)
{
    // Проверяем, оторвались ли мы от земли
    if (collision.collider.CompareTag("Ground"))
    {
        isGrounded = false;
    }
}


Но перед тем как запускать игру добавим нашей платформе тег “Ground”. Для этого кликаем на платформу и в  Инспекторе выберем Tag/Add Tag, нажимаем “+” и даем имя “Ground”.



Добавление тега на спрайт в Unity


Почти закончили, осталось добавить преследование камеры игрока, для этого перемещаем Main Camera в player.


Добавление камеры на спрайт в Unity


Теперь можете сделать уровень по своему усмотрению.



Делаем уровень игры "Платформер" в Unity


Но чтобы игра не была слишком скучной, добавим возможность проигрыша и выигрыша. Принцип такой же, как и для создания платформы. Дублируем платформу и добавим теги “Lose” и “Finish”. Разместим платформу с тегом “Lose“ под нашим уровнем и сделаем ее невидимой, просто изменив цвет, а платформу с тегом “Finish“ разместим в конце.



Теперь изменим функцию OnCollisionEnter2D.


private void OnCollisionEnter2D(Collision2D collision)
{
    // Проверяем, касаемся ли мы земли
    if (collision.collider.CompareTag("Ground"))
    {
        isGrounded = true;
    }
 
    if (collision.collider.CompareTag("Lose"))
    {    
        UnityEditor.EditorApplication.isPlaying = false; // Если игра запущена в редакторе, останавливаем воспроизведение
        Application.Quit(); // Если игра в сборке, выходим из приложения
     }
    
    if (collision.collider.CompareTag("Finish"))
    {
        UnityEditor.EditorApplication.isPlaying = false; 
        Application.Quit(); 
    
    }
}

Поздравляем! Вы сделали свою первую игру!

Если у вас что-то не работает, внимательнее перечитайте статью. Если проблема с кодом, то вот исходный код: https://blog.saikt.ru/scripts/platformer.zip


Разработка даже небольшой игры в Unity — это отличный способ освоить ключевые принципы работы с движком. Мы начали с простого платформера, разобрались с размещением спрайтов, добавлением физики (Rigidbody 2D) и коллайдеров (Box Collider 2D), чтобы объекты взаимодействовали друг с другом реалистично.  Главное — не пытаться сразу создать идеальную игру. Лучше двигаться шаг за шагом, закрепляя знания на практике.


Удачи в разработке!



Автор статьи: Констатин Масальцев, ученик "САИКТ" на курсе "Программирование на С/С++"