Если есть что-то круче, чем играть в игры, это строить игры.
Если вы создаете 2D-игры, такие как Angry Birds, или 3D-игры, такие как Counter Strike, вы можете зарабатывать деньги, публикуя их в таких местах, как Play Store, App Store или в Интернете.
Как начать строить игры
Существует множество инструментов для создания игр, и в этой статье мы рассмотрим очень популярную Unity 5 , игровую платформу, которая облегчает разработку 2D и 3D-игр для различных платформ, таких как OS X, Linux, Windows, Unity Webplayer. Android, iOS, BlackBerry 10, Windows Phone, Tizen, WebGL, PlayStation, Wii U, Nintendo, Xbox, Android TV, Samsung Smart TV, Oculus Rift, HTC Vive и Gear VR.
В этой статье мы рассмотрим, как построить трехмерный космический корабль, полный препятствий, врагов, маневрирования и стрельбы. После того, как мы закончим сборку нашей игры, она будет выглядеть так:
Мы пройдемся по установке Unity3D Personal Edition, разработаем 3D-игру с использованием 3D-моделирования, находчивого хранилища ресурсов Unity, сценариев (JavaScript) и мощного физического движка Unity.
Нет никаких предварительных условий для следования этому руководству, хотя базовые знания JavaScript будут полезны.
Установка
Установить Unity так же просто, как скачать отсюда установщик для вашей соответствующей платформы.
Менеджер загрузок — это небольшой файл, который предлагает вам выбрать, какие компоненты вы можете загрузить. Эти загрузки, как правило, имеют большой размер (в гигабайтах), поэтому вы, возможно, захотите отложить или прочитать этот учебник до завершения процесса установки.
После установки откройте Unity 5 и выберите « Новый проект» под опцией «Создать проект». Введите имя проекта и выберите параметр 3D, чтобы импортировать пакеты ресурсов для 3D-игр, и, наконец, нажмите « Создать проект» .
Понимание 3D-моделей и камеры
Если вы успешно выполнили все шаги в разделе «Установка», вы получите интерфейс Unity 5 для создания игр. Поскольку мы создаем 3D-игру, нам нужно иметь 3D-объекты в нашем игровом процессе. Вы можете вставить 3D-модель в игру, выбрав GameObject> 3D Object . Я вставил куб в сцену. Теперь ваш экран должен выглядеть так:
Нажав на куб, вы увидите несколько параметров, связанных с выбранным 3D-объектом, например, Transform , Mesh , Box Collider и Mesh Renderer .
Эти 3D-модели взаимодействуют друг с другом и игровым процессом, используя так называемый физический движок . Вы можете применить правила физики к любому трехмерному объекту, щелкнув по нему и выбрав Компоненты> Физика> Твердое тело .
Это заставит игровой движок Unity рассматривать объект как твердое тело в реальном слове и применять к нему различные взаимодействия в реальном мире, такие как столкновения и гравитация.
Unity использует камеры для рендеринга объектов в игровом пространстве. Когда вы войдете в игровой режим, чтобы посмотреть на свое игровое поле, вы сможете увидеть его с точки зрения камеры — что также увидят игроки в игре.
На следующем изображении показано поле обзора камеры и предварительный просмотр камеры, которые можно открыть, щелкнув объект камеры:
Стоит немного поиграться с 3D-моделями и камерами, поскольку чем больше вы с ними знакомы, тем лучше вы будете понимать шаги, которые следуют.
Использование Unity Asset Store
Поскольку мы только начали, начинающим сложно разрабатывать очень сложных игроков, а также декорации для игры. Магазин активов Unity приходит на помощь, чтобы помочь нам решить эту проблему.
Магазин активов Unity — это коллекция различных моделей, материалов, звуков, анимации и многого другого. Ресурсы могут быть разных типов, и многие модели могут иметь анимацию и звуки, прикрепленные к ним для облегчения вашей работы.
Как и в любом другом магазине, для создания игры доступны как платные, так и бесплатные ресурсы. Поскольку мы создаем игру для космического корабля, давайте получим крутой космический корабль для нашей игры.
Вы можете открыть Asset Store, нажав на вкладку Asset Store рядом с вкладкой Game . Я выбрал космический корабль для игры, и мой экран выглядел так:
Вы также можете скачать этот набор ресурсов, нажав здесь . Теперь нажмите « Импорт», чтобы импортировать этот набор активов в ваш проект. Вы можете перенести космический корабль в игровой процесс, нажав на модель omega_fighter_01> и перетащив omega_fighter на панель иерархии в левой части экрана. Ваша модель должна теперь находиться в игровой зоне.
Теперь вы должны переместить космический корабль в исходное положение (0, 0, 0)
, нажав на космический корабль и введя соответствующие значения в меню « Преобразование» на правой панели. Вам также необходимо изменить положение камеры, используя ту же технику.
Для меня (0, 0.8, -1.5)
с вращением (25, 0, 0)
сработало хорошо. Войдите в режим игры, нажав на вкладку « Игра » и добавьте персонажа Rigidbody на космический корабль. Не забудьте снять галочку с опции « Использовать гравитацию» под опцией « Rigidbody» на правой панели (вы бы не хотели, чтобы ваш космический корабль упал с неба, не так ли?). Теперь ваш экран должен выглядеть примерно так:
Построение игровой среды
Давайте создадим простую игровую настройку, установив некоторые препятствия. Поместите землю с помощью компонентов> 3D-объекты> Параметры плоскости и добавьте несколько столбов.
Вы можете создать лабиринт, в котором ваш космический корабль должен избегать всех препятствий, достигать конечной стены и должен касаться ее, чтобы избежать удара. Добавить компонент твердого тела для всех из них. Вот как выглядит мое игровое поле сверху:
Добавление поведения к объектам
Ваша игра теперь нуждается в логике для запуска. Вам нужно будет запрограммировать, как движется космический корабль, что происходит, когда он сталкивается, и так далее.
CameraController
Вам нужно будет запрограммировать основную камеру, чтобы она двигалась вместе с вашим игроком, иначе вы не сможете отслеживать свой космический корабль, как только он выйдет из поля зрения камеры.
В строке меню выберите « Ресурсы»> «Создать»> «Javascript», чтобы создать файл JavaScript. Теперь нажмите на « Основная камера» и выберите кнопку « Добавить компонент»> «Сценарии»> «CameraController» в нижней части правой панели.
#pragma strict // variable offset of the type Vector3 var offset : Vector3; // variable player of the type GameObject var player : GameObject; function Start () { offset = transform.position - player.transform.position; } function LateUpdate () { transform.position = player.transform.position + offset; }
Приведенный выше код вычислит разницу между позициями объекта камеры и GameObject и обновит положение камеры (используя LateUpdate()
) в соответствии с позицией игрока.
Теперь добавьте скрипт к объекту Player.
#pragma strict import UnityEngine.UI; var loseText : Text; var winText : Text; var rb : Rigidbody; var speed : float; var tilt : float; // initialising variables function Start () { rb = GetComponent.<Rigidbody> (); loseText.text = ""; winText.text = ""; } function Update () { function FixedUpdate () { // take input from keyboard var moveHorizontal : float = Input.GetAxis ("Horizontal"); var moveVertical : float = Input.GetAxis ("Vertical"); // map the movement with Vector3 var movement : Vector3 = new Vector3 (moveHorizontal, 0.0f, moveVertical); // add force to the object rb.AddForce (movement * speed); // add rotation to the object rb.rotation = Quaternion.Euler (0.0f, 0.0f, rb.velocity.x * -tilt); } // works when two objects collide with each other function OnTriggerEnter(other : Collider) { if (other.tag == "Obstacles") { Destroy(gameObject); Destroy(other.gameObject); loseText.text = "You Lose!"; } if (other.tag == "Win") { Destroy(gameObject); Destroy(other.gameObject); winText.text = "You Win!"; } }
Здесь мы импортировали UnityEngine.UI
для импорта типа данных Text
, который присутствует в наборе инструментов пользовательского интерфейса Unity. Приведенный выше код отображает движения космического корабля (объекта игрока) с помощью клавиш со стрелками (используя функцию Input.GetAxis
) и перемещает его с AddForce
функции AddForce
.
Это также вносит наклон в космический корабль, когда космический корабль движется влево или вправо. Функция Quaternion.Euler
используется для вращения космического корабля в зависимости от силы, действующей на твердое тело. Методы rotation
и AddForce
используют объект Vector3 для получения информации о направлении, в котором должно происходить движение.
Мы ввели логику, что если игрок касается объекта с тегом « Obstacles
, функция « Destroy
уничтожает космический корабль и объект, с которым он сталкивается, а затем Вы проигрываете!
текст отображается. Если он касается объекта с тегом Win
, он отображает You Win!
, Последний объект является последней стеной лабиринта.
Теперь, возвращаясь к окну игры, вы заметите, что скрипты были прикреплены к соответствующим объектам.
Теперь вам нужно создать текстовые объекты, что возможно, выбрав GameObject> UI> Text . Расположите текст соответствующим образом. Теперь нажмите на объект Player и посмотрите на настройки в разделе скрипта.
Должны быть такие опции, как Lose Text и Win Text . Назначьте пустым полям соответствующие объекты, перетащив нужные игровые объекты из-под иерархии на левой панели в пустые поля. Настройка Speed 8.5
и Tilt 4
работала хорошо для меня. Аналогичным образом добавьте соответствующие параметры для объекта «Камера». Теперь вы можете проверить игру, нажав на значок Play в верхней части (в центре) окна.
Компиляция и сборка автономного
Ваша новая космическая игра построена. Сохраните сцену, нажав Файл> Сохранить сцену как… . Теперь выберите « Файл»> «Настройки сборки» . Выберите свою операционную систему и нажмите кнопку Build . Ваш экран должен выглядеть так:
Это создаст отдельный файл для вашей операционной системы. Ваша игра готова к игре и распространению. Вот видео игрового процесса:
Как вы видите в конце видео, я поместил в игру огромный вертолет — из магазина активов — и добавил к нему тег Win
. Таким образом, если мой космический корабль достигнет вертолета, игра заканчивается — и вы выиграли!
Вывод
Unity 5 предоставляет отличную возможность заинтересованным людям разрабатывать как 2D, так и 3D игры. Как мы уже видели, рабочий процесс разработки игр, включая сценарии, довольно прост, и вы можете легко разрабатывать игры различной сложности, используя один и тот же рабочий процесс.
Примером игры, которую вы могли бы опубликовать и продать, была бы игра космического корабля, где враги стреляют в вас, а вы стреляете в них. Игра может состоять из нескольких уровней или этапов.
Кривая обучения для разработки профессиональных игр для Unity не очень крутая. Unity Asset Store — отличный ресурс для поиска интересных ресурсов для вашей игры, так что вам не нужно начинать работать над новой игрой с нуля.
Вы разрабатывали какие-либо игры с помощью Unity? Какой ваш любимый игровой движок?