Как создать первую игру на 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", даем имя нашей игре и выбираем папку, в которой наш проект будет храниться. Создание проекта может занять какое-то время, в зависимости от устройства.
После создания проекта нас встречает главное окно.
Давайте посмотрим все по порядку.
· Панель инструментов - обеспечивает доступ к наиболее важным рабочим функциям;
· Панель сцены (Scene View) - основное рабочее пространство, где создаются и редактируются игровые объекты. Здесь можно перемещать, масштабировать и вращать объекты, а также настраивать их свойства;
· Панель игры (Game View) - отображает, как сцена будет выглядеть в реальной игре;
· Иерархия (Hierarchy) - показывает все объекты, присутствующие в текущей сцене, в виде дерева. Здесь можно организовывать объекты, создавая родительские и дочерние связи;
· Инспектор (Inspector) - отображает свойства выбранного объекта. Здесь можно изменять параметры, добавлять компоненты и скрипты, а также настраивать поведение объектов;
· Панель проекта (Project) - показывает все файлы и ресурсы, используемые в проекте. Здесь создавать папки, скрипты, спрайты, а также управлять ресурсами;
· Консоль (Console) - отображает сообщения об ошибках, предупреждениях и другие важные уведомления. Это инструмент для отладки и выявления проблем в проекте.
В целом, интерфейс Unity полностью настраивается, поэтому каждый может настроить его под себя.
Разработка игры
Как мы ранее отмечали, не стоит браться за большой
проект сразу. Лучше начать с небольшого платформера — это поможет освоить
принципы работы в Unity.
Перед тем как начать, создадим папку, в которой будут
храниться наши «спрайты» (графический объект в компьютерной графике). Для этого
кликаем ПКМ по панели проекта и выбираем Create/Folder. После чего переименовываем
папку в Sprites и добавляем туда спрайты
игрока и платформы. Спрайтами может являться любая картинка формата .jpg и .png. Сделать это можно просто
перетащив в панель проекта наши спрайты.
Чтобы добавить наши спрайты в игру, просто перетащите их из панели проекта в панель сцены.
После размещения всех спрайтов добавим компоненты, которые обеспечат игровым объектам физическое поведение.
1. Добавление физики игроку:
· Выделите спрайт игрока;
· В окне «Инспектор» нажмите Add Component;
· Найдите и выберите Rigidbody 2D — это позволит объекту взаимодействовать с физикой (гравитация, силы и т.д.).
2. Настройка коллайдеров:
· Чтобы объекты могли сталкиваться, добавьте компонент Box Collider 2D как игроку, так и платформам;
· Коллайдер определяет границы столкновений, делая взаимодействие объектов реалистичным.
Теперь игрок будет подчиняться законам физики, а платформы смогут его удерживать.
Теперь можно перейти к написанию кода для нашей игры, для этого кликаем на спрайт игрока и добовляем ему компонент “New script”. Заходим в скрипт и перед нами стандартный класс MonoBehaviour, который мы и будем программировать.
Для начала пропишем все нужные переменные.
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.
Теперь после запуска игры наш персонаж сможет ходить. Но из одной ходьбы у нас платформер не получится, поэтому добавим функцию прыжка.
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”.
Почти закончили, осталось добавить преследование камеры игрока, для этого перемещаем Main Camera в player.
Теперь можете сделать уровень по своему усмотрению.
Но чтобы игра не была слишком скучной, добавим возможность проигрыша и выигрыша. Принцип такой же, как и для создания платформы. Дублируем платформу и добавим теги “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), чтобы объекты взаимодействовали друг с другом реалистично. Главное — не пытаться сразу создать идеальную игру. Лучше двигаться шаг за шагом, закрепляя знания на практике.
Удачи в разработке!
Автор статьи: Констатин Масальцев, ученик "САИКТ" на курсе "Программирование на С/С++"