Индустрия мобильных игр – крупнейшая индустрия видеоигр- с более чем 2 миллиардами активных игроков по всему миру. Это также самая разнообразная база игроков с людьми всех возрастов со всего мира. Играющими на своих смартфонах. Эти цифры вряд ли изменятся в обозримом будущем, что делает индустрию мобильных игр захватывающей границей для разработчиков.
В этом уроке мы будем создавать простой клон игры “Flappy Bird” в Unity. Unity имеет мощные инструменты для разработчиков, желающих сделать мобильную игру. И в этом уроке мы будем создавать ее с нуля. Следуйте за нами и сделайте шаг на арену мобильных игр. И вы узнаете, как сделать мобильную игру в Unity собственными силами!
Как сделать мобильную игру в Unity
Настройки проекта
Вы захотите создать совершенно новый проект 2D Unity.
Прежде чем мы что-нибудь сделаем здесь, давайте поговорим о настройке, которую нам нужно сделать. Прежде чем мы начнем разрабатывать для мобильных устройств. Первый-изменить платформу сборки. Если в правом верхнем углу вашего проекта написано что-то вроде этого:
Тогда нам нужно изменить несколько вещей. Прямо сейчас наш проект настроен на настольную игру. Нам нужно перейти на мобильную игру. Перейдите в Файл -> Настройки сборки, чтобы изменить нашу целевую платформу, и сделать мобильную игру в Unity
Теперь обратите внимание, что нам дают несколько вариантов, когда дело доходит до мобильной платформы. Мы можем разрабатывать как для Android, так и для iOS. Вы можете выбрать любую платформу, просто знайте, что для разработки для iOS требуется компьютер под управлением Mac OSX. Если вы хотите протестировать на устройстве iOS. Тем не менее, я собираюсь выбрать Android. После того, как вы сделали свой выбор, нажмите “switch platform” и позвольте Unity перенастроить ваш проект.
Теперь мы готовы начать разработку нашей игры!
Разрешения экрана
Прежде чем мы начнем помещать игровые объекты в нашу сцену, нам нужно убедиться. Что мы работаем в правильном разрешении экрана. Поскольку мы разрабатываем для мобильных устройств, у нас меньше свободы. Когда дело доходит до определения разрешения нашей игры. Мобильные игры могут быть в двух разных ориентациях, альбомной или портретной. В случае нашего проекта мы будем использовать портретную ориентацию. Перейдите на вкладку игра и установите вид игры на портретное разрешение.
Не имеет значения, какое разрешение портрета вы выберете, если это разрешение портрета. Как только это установлено, нам не нужно его менять. У нас есть правильное разрешение экрана, и теперь мы можем начать создавать нашу игру.
Импорт активов
Вы можете скачать ресурсы, которые мы будем использовать для этого урока. Загрузите, распакуйте и импортируйте папку “images” в папку проекта.
Если вы посмотрите файл изображений, вы заметите, что здесь довольно много работы. У нас есть фоны, препятствия и даже некоторый пользовательский интерфейс. Мы в основном будем работать со скалами, самолетами и фонами. Но в этом пакете активов есть много свободы, чтобы сделать этот проект своим. А пока давайте начнем заполнять нашу сцену. Если вам сложно разобраться с созданием игры, то можете узнать сколько стоит создать мобильную игру. И возможно это будет дешевле, чем вы думаете.
Настройка наших спрайтов — что-бы сделать мобильную игру в Unity
В нашей сцене вы заметите, что есть штуковина, которая показывает размер нашей камеры. И, следовательно, разрешение экрана, которое мы выбрали.
Все внутри этого прямоугольника будет отображаться на экране устройства. Это полезное руководство, которое мы можем использовать для масштабирования. И позиционирования изображений там, где они нам нужны. С учетом сказанного, идите вперед и перетащите самолет, фон и изображение земли.
Прежде чем мы зайдем слишком далеко, обязательно сохраните свою сцену как “GameScene” в папке “Scenes”.
Масштабируйте фон, чтобы он соответствовал нашей сцене.
Мы собираемся создать стиль flappy bird, поэтому убедитесь, что ваш игрок смещен влево. Переименуйте изображение самолета в “Игрок”.
Далее нам нужно настроить наши препятствия. Для этого выберите пару камней из папки “камни” и перетащите их в нашу сцену. Теперь вы заметите, что мы не можем видеть наши камни, потому что они находятся за фоном.
Это потому, что мы не исправили порядок сортировки наших изображений. Поскольку 2D-игры технически не имеют Z-глубины, Unity отображает их все в стеке. Затем мы можем указать, в каком порядке в стеке должно отображаться каждое изображение. Прямо сейчас все они установлены в 0, поэтому Unity просто отображает их все на одном слое.
Чтобы исправить это, давайте сделаем так, чтобы порядок рендеринга фона был -1, игрок-1, а земля и камни-2.
Таким образом, мы знаем, что независимо от того, где мы расположим эти изображения. Все они будут отображаться в правильном порядке.
Теперь, когда мы выровняли порядок рендеринга, расположите камни так, как будто они являются препятствием:
Мы хотим оставить много дополнительного места на верхней и нижней части скал. Поэтому масштабируйте и позиционируйте их по мере необходимости. Мы хотим, чтобы все эти препятствия были одним объектом. Поэтому создайте пустой игровой объект под названием “Камни” и сделайте наши два камня родственными ему.
Мы хотим, чтобы происхождение этого пустого игрового объекта находилось примерно в центре двух скал. Чтобы мы могли легко его порождать. После того, как вы правильно расположили ее, создайте новую папку под названием “prefabs”. И перетащите этот объект “Rocks” в папку, чтобы сделать его сборным.
После всего этого мы можем удалить объект “Rocks” и перейти к кодированию!
Сборка игрока
Есть несколько вещей, которые, как мы знаем, понадобятся нашему объекту самолета. Мы знаем, что ей нужна физика, и мы знаем, что она столкнется с вещами. Поэтому мы знаем, что нашему игроку нужно иметь твердое тело и коллайдер. Добавьте в наш плеер “Rigidbody2D” и “Circle Collider 2D”. Вы можете оставить настройки жесткого тела по умолчанию, но размер кольцевого коллайдера примерно охватывает игрока.
Чтобы сделать мобильную игру в Unity создайте папку “Scripts” и создайте новый скрипт C# под названием “Player”. А затем перетащите этот же скрипт на наш плеер.
Теперь мы готовы начать кодировать нашего бортмеханика. Откройте скрипт игрока и давайте подумаем о том, что нужно сюда зайти. Во-первых, нам нужно добавить восходящую силу к плоскости. Мы можем сделать это, используя метод “AddForce” на жестком теле игрока. Далее нам нужно взять сенсорный ввод. Есть несколько способов сделать это, но мы собираемся использовать “GetMouseButtonDown”. Мы можем использовать этот метод, потому что мы будем тестировать в редакторе, и Unity позволит “GetMouseButtonDown” также работать для прикосновений. Наш окончательный сценарий будет выглядеть так:
Все довольно просто. Мы получаем доступ к жесткому телу игрока и применяем силу вверх, если пользователь нажимает. Теперь, когда мы возвращаемся в редактор и нажимаем play, мы можем заставить нашего игрока летать!
Теперь, когда игрок может летать, нам нужно сделать препятствия для игрока, чтобы избежать.
Создание препятствий
Аналогично тому, что мы сделали с игроком, нам нужно дать нашим камням коллайдер. Отличие скал в том, что нам не нужна физика, нам просто нужен коллайдер. Перейдите в папку prefabs и дважды щелкните по сборке rocks. Это позволяет нам редактировать сборку, не находясь в сцене. Добавьте полигональный коллайдер к обоим элементам rock (не к родительскому объекту).
Пока мы здесь, давайте создадим новый тег под названием “rocks” и пометим каждый из элементов rock (не родительский объект).
Давайте создадим новый скрипт под названием “Rocks » и на этот раз назначим его родительскому объекту.
В этом сценарии нам нужно сделать всего несколько вещей. Нам нужно, чтобы камни двигались влево с постоянной скоростью и, как только они исчезнут с экрана, просто удалились. Код для этого выглядит следующим образом:
Нерестовые скалы
Хотя это заставит рок двигаться вперед, нам также нужно, чтобы он появился в мире. Сохраните свой prefab и давайте вернемся к сцене. Создайте новый пустой игровой объект под названием “RockSpawner” и поместите его в правую часть сцены вне поля зрения камеры.
Создайте новый скрипт под названием “RockSpawner” и назначьте его объекту RockSpawner.
Все, что нам нужно, чтобы этот скрипт делал, это создавал камни с постоянной скоростью. Код будет выглядеть так:
Обратите внимание, что у нас есть камни spawner spawn в случайных позициях y. Фактический диапазон этого вам, возможно, придется настроить. Но это дает нам гораздо больше разнообразия, когда дело доходит до нереста камней. Также обратите внимание, что мы нерестим камни в позиции спавнера. Имейте это в виду, если вы хотите настроить точное положение камней. Теперь просто назначьте префаб “rocks” полю “rocks” на RockSpawner, и все готово!
Теперь, когда мы нажимаем play, у нас есть камни, чтобы увернуться!
Меню и подсчет очков
Игра на самом деле не игра, если нет какой-то системы подсчета очков. Мы можем выиграть эту игру, увеличивая каждый раз, когда игрок проходит через препятствие. Для этого мы возвращаемся к сборным скалам и создаем новый коробчатый коллайдер на родительском объекте, который проходит между двумя скалами.
Очень важно установить этот коллайдер на “триггер”, который позволит игроку пройти прямо. Этот коллайдер не будет обеспечивать барьер. Он будет действовать как триггер, который обнаружит, когда игрок проходит. Чтобы это работало в коде, мы сначала заходим в скрипт игрока и добавляем новое статическое целое число под названием “score”.
Теперь мы можем перейти к скрипту Rocks и увеличивать эту переменную score каждый раз, когда игрок переходит в новый коллайдер. Мы делаем это с помощью метода “OnTriggerEnter2D”.
Отображение счета
У нас есть система подсчета очков. Но если у нас нет способа увидеть ее в игре, это бесполезно. Для этого нам нужно создать текстовый объект под названием “Оценка”. Который идет в верхней части экрана. Настройте текст, пока он не будет выглядеть правильно, и закрепите его в верхней части экрана.
Теперь мы можем просто заставить скрипт игрока отображать счет для этого текстового объекта.
Как только мы назначим текстовый объект “Score” полю “scoreText” в скрипте игрока. Мы сможем увидеть наш счет в игре!
Запуск игры
Если игрок начинает игру сразу после ее запуска, это немного раздражает. Нам нужен способ начать игру со стартового экрана. Нам нужен приветственный текст и кнопка для начала игры. Создайте новое изображение под названием “WelcomeText” и перетащите объект “textGetReady” из папки пользовательского интерфейса в поле sprite. Масштабируйте его так, чтобы он соответствовал сцене.
Про остальное, мы расскажет в следующей статье.