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

  • Windows и Windows Phone;
  • Linux;
  • Mac OS;
  • IOS и Android;
  • Браузерные игры, которые работают при поддержке плагина Unity Web Player и т.д.

Гоночный платформер от Unity

В целом игра или приложение, независимо от того где она будет использоваться на ПК или смартфоне, состоит из комбинаций компьютерных инструкций и  данных, позволяющая АВС (Автоматическая Вычислительная Машина) выполнять вычисления или функции управления, которые соответствуют определённому языку программирования. В этом и есть суть реализации потенциала и накопленной фантазии в создание своего проекта.

Для закрепления навыков нужна практика. Поэтому, давайте рассмотрим пример двухмерной игры «Гонки», где выбранное пользователем авто будет совершать движение по дороге.

Подготовка рабочего места и поиск предметов игры

Трасса для платформера 2D

Персонажем, о котором будет идти речь, является «Машинка»,  выбрать можно любую, от грузовика до легковушки, а так же конечно, трек, по которому она будет двигаться — «Дорога». По треку машинка ехать не будет, в свою очередь движение зададим дороге, таким образом, создадим иллюзию движения. Главное, что бы проекция на предметы была сверху, а не сбоку.

Далее делаем вход и настройку системы:

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

  • Запускаем приложение Unity 3D;
  • В появившемся окне кликаем «New Project», прописываем имя проекта, проставляем локацию для сохранения, ставим отметку напротив модуля 2Д и нажимаем кнопку «Create Project»;
  • При открытии программы, можно упорядочить удобное расположение рабочих окон, передвинуть их, нажав ПКМ и перетащив;
  • Выбираем File – Build Setting, если выбираемый проект компилируется под файловые системы типа Windows, MAC и т.п., то выбираем Android и нажимаем «Switch Platform»;
  • Перемещаем выбранные ранее заготовки в Юнити, в папку Assets.

Выбор компилятора проекта

Подготовление основы

Сцена готова, начинаем задавать значения нашим объектам в Инспекторе:

  • Кликаем на картинку дороги и меняем значение на Texture в меню Инспектор – Texture Tabe;
  • Что бы текстура повторялась, для нашей игры выбираем Wrap Mode – Repeat, остальные свойства оставляем и нажимаем Apply;
  • Трек состоит на основе 3Д объекта Quad, его можно выбрать в меню Create – 3D Object, после растягиваем его по размерам выбранной игровой области и перетягиваем картинку дороги на Quad;
  Удалить программу Unity Web Player

Изменение свойств трассы

Так как предметы сцены притемнены, добавляем объект Direction Light. Это так называемый источник света. Он создаёт вид солнца, предоставляя возможность осветить вид на сцене и добавить теней, для лучшего контраста.

После нужно задать нашей дороге функцию движения, для того прописываем новый скрипт:

  • Создание папки Scripts, сюда добавим С# Script, под названием «Move Track» и начинаем редактировать;
  • Двойным нажатие на скрипт открываем текстовый редактор и прописываем код со значениями, при которых будет смещаться созданная текстура:
  • пропишем переменную public float speed = 1f, таким образом, трек будет двигаться со скоростью 1, в дальнейшем это значение можно подкорректировать;
  • далее в Update прописываем новый вектор, в котором параметры движение будет производиться по Y: Vector2 offset = new Vector2 (0, Time.time * speed);
  • далее прописываем GetComponent <Renderer> ().material.mainTextureOffset = offset, здесь задано всей текстуре значение cдвига;
  • После создания скрипта проверяем движение дороги на сцене, нажав кнопку Play.

Скрипт MoveTrack

Робота над «игроком»

Перетаскиваем машинку на сцену и выставляем её размеры, и расположение для удобного пользования, при этом задаём в строке название Player.

Следующие этапы:

  • Добавляем к текстуре компонент Box Collider 2D, что бы объект стал «твёрдым». Не забываем выставить границы нажатием на Edit Collider;
  • Также добавим Rigidbody 2D со значением Gravity Scale 0, в работе такого рода игры нет потребности использовать силу гравитации;
  • Создаём скрипт для привода движения предмета, например, назвав Player Controller;Настройка параметров авто
  • Открываем редактор и задаём значения:
    • переменная public float carSpeed = 5f, а также Rigidbody2D rb;
      void Start () { rb = GetComponent < Rigidbody2D >(); }
    • теперь нужно задать объекту перемещение влево и вправо, для этого в Update пишем: float direction = Input.GetAxis («Horizontal»);
      Vector2 carMove = New Vector2 (carSpeed * direction, 0);
      rb.velocity =  carMove;
    • задаём значения границ, за которые объект не должен выходить:
      Vector3 pos = transform.position;
      pos.x = Mathf.Clamp (pos.x, -2.2f, 2.2f);
      transform.position = pos;
    • Возвращаемся в Юнити и кнопкой Play проверяем результат.
  Для чего нужен Unity Web Player

Скрипт PlayerController

Добавление оппонентов

В сети нужно подыскать схожую по параметрам ещё одну машинку и перенести её в среду Unity. Добавляем компоненты:

  • Расположив препятствие на игровой сцене, добавляем Box Collider 2D и редактируем по примеру игрока и разворачиваем на 180;
  • Добавляем скрипт enemyMove с программированием кода для перемещения:
    • public float Speed;
    • speed = Random.Range (5f, 8f);
    • transform.Translate (new Vector3 (0, 1, 0) * speed * Time.deltaTime);Скрипт EnemyMove
  • Дальше создаём пустой New Object и выносим его за приделы игровой зоны, при этом поворачиваем на 180. Для удобства присвоим имя «Barrier» и пометим любой иконкой;
  • Программируем скрипт этому объекту:
    • public GameObject[ ] barrier;
    • public float delayTimer = 2f;
    • float timer;
    • При старте указываем: timer = delayTimer;
    • При каждом апдейте:
    • Timer -= Time.deltaTime;
    • If (timer <= 0) {
    • Vector3 pos = new Vector3 (Random.Range (-2.2f, 2.2f), transform.position.y, transform.position.z);
    • int BarrierID =  Random.Range (0, 1);
    • Instantiate (barrier [BarrierID], pos, transform.rotation);
    • timer = delayTimer; }
  • Теперь в окне Иерархии кликаем на текстуру Barrier, выбираем в Инспекторе — Barrier – Size – 1, в строку добавления объектов перетягиваем оппонента;
  • Запускаем и наслаждаемся.

Скрипт BarrierScript

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

Отправить ответ

avatar
  Подписаться  
Уведомление о