Unity — один из самых популярных игровых движков в мире, и начать работу с ним может каждый. Эта инструкция проведет вас через первые шаги, от установки до создания простого прототипа с открытым кодом, который вы сможете модифицировать. Мы сосредоточимся на практическом подходе, используя Unity версии 2022 LTS или новее.
Шаг первый — загрузка и установка. Перейдите на официальный сайт Unity и скачайте Unity Hub. Hub является менеджером, который позволяет устанавливать разные версии движка и редактора, а также управлять проектами. После установки Hub, откройте его и перейдите во вкладку «Installs». Нажмите «Add» и выберите рекомендуемую версию LTS (Long-Term Support). При выборе компонентов обязательно отметьте «Visual Studio Community» или «Visual Studio Code» — это интегрированные среды разработки (IDE) для написания кода на C#. Завершите установку.
Теперь создадим первый проект. В Unity Hub на вкладке «Projects» нажмите «New project». Выберите шаблон «3D Core» (или «2D Core», если планируете двумерную игру). Укажите имя проекта, например, «MyFirstGame», и путь для сохранения. Нажмите «Create project». Редактор Unity загрузится, и вы увидите интерфейс, состоящий из нескольких панелей: Scene (Сцена), Game (Игра), Hierarchy (Иерархия), Project (Проект) и Inspector (Инспектор).
Прежде чем писать код, разберемся с базовыми понятиями. Вся игра в Unity состоит из сцен (Scenes). Сцена содержит игровые объекты (GameObjects). Каждый GameObject может иметь компоненты (Components), которые определяют его поведение. Самый важный компонент — это Script (Скрипт), написанный на C#. Давайте создадим простой скрипт. В панели Project создайте папку `Scripts`. Щелкните правой кнопкой в этой папке, выберите `Create > C# Script`. Назовите его `PlayerMovement`.
Дважды щелкните по скрипту, чтобы открыть его в IDE. Вы увидите шаблонный код с двумя методами: `Start()` (вызывается один раз при старте объекта) и `Update()` (вызывается каждый кадр). Наша цель — заставить куб двигаться от нажатий клавиш. Для начала добавим публичную переменную для скорости, чтобы ее можно было настраивать в редакторе: `public float speed = 5f;`. В методе `Update()` получим ввод с клавиатуры: `float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical");`. Эти значения будут между -1 и 1.
Теперь создадим вектор движения и применим его к позиции объекта. `Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);`. Чтобы движение было независимым от частоты кадров, умножим его на `Time.deltaTime` и нашу скорость. `transform.Translate(movement * speed * Time.deltaTime);`. Сохраните скрипт и вернитесь в Unity.
Чтобы применить скрипт, нужно добавить его к GameObject. В Hierarchy панели вы увидите объект «Main Camera» и «Directional Light». Создадим наш игровой объект. Щелкните правой кнопкой в Hierarchy, выберите `3D Object > Cube`. Перетащите скрипт `PlayerMovement` из панели Project на объект «Cube» в Hierarchy или в его Inspector. Теперь в Inspector у куба появился компонент `PlayerMovement`, и вы даже можете изменить переменную `speed` прямо там.
Нажмите кнопку Play (треугольник вверху редактора). Сцена перейдет в режим игры. Нажмите клавиши W, A, S, D или стрелки. Куб должен двигаться! Это ваш первый интерактивный код. Но что, если мы хотим, чтобы за игроком следовала камера? Создадим еще один скрипт `CameraFollow`. В нем объявим публичную переменную `Transform target;` (это будет наш куб). В `Update()` или лучше в `LateUpdate()` (который вызывается после всех `Update()`), установим позицию камеры равной позиции цели с небольшим смещением: `transform.position = target.position + new Vector3(0, 5, -10);`. Не забудьте повернуть камеру, чтобы она смотрела на цель.
Добавьте этот скрипт к объекту «Main Camera». В Inspector компонента `CameraFollow` вы увидите поле `Target`. Перетащите объект «Cube» из Hierarchy в это поле. Запустите игру снова — теперь камера следует за кубом. Вы только что создали простую, но работающую игровую механику.
Чтобы углубить понимание, давайте добавим сбор предметов. Создайте сферу (Sphere) в сцене — это будет «монетка». Создайте новый скрипт `Coin`. В нем нам нужна логика вращения для красоты и обработки столкновения. Добавьте в `Update()`: `transform.Rotate(0, 100 * Time.deltaTime, 0);`. Чтобы обработать столкновение, используйте метод `OnTriggerEnter(Collider other)`. Проверьте, если столкнувшийся объект имеет тег «Player» (нужно назначить тег «Player» нашему кубу), то уничтожьте монетку: `Destroy(gameObject);`. Не забудьте добавить компонент Collider (он уже есть) и сделать его триггером (поставьте галочку Is Trigger в Inspector), а также добавить Rigidbody к игроку для физики.
Теперь создадим менеджер для подсчета очков. Создайте пустой GameObject, назовите его «GameManager». Создайте скрипт `GameManager`. В нем объявите публичную статическую переменную для счета и метод для его увеличения. В скрипте `Coin` при уничтожении вызывайте метод увеличения счета из GameManager и, например, выводите его в консоль (`Debug.Log`).
Это база, на которой можно строить. Весь код, описанный выше, является открытым и может быть модифицирован. Ключ к освоению Unity — эксперименты. Меняйте значения, добавляйте новые функции, изучайте Asset Store для бесплатных ресурсов. Unity обладает огромным сообществом, и тысячи обучающих материалов доступны онлайн. Начните с этого прототипа, и постепенно вы сможете создать свою первую полноценную игру.
Как использовать Unity: пошаговая инструкция с открытым кодом
Практическое руководство по установке Unity, созданию первого 3D-проекта и написанию скриптов на C# для управления игровым объектом, камерой и механикой сбора предметов с открытым для модификации кодом.
335
2
Комментарии (5)