На игровой платформе Unity уже давно создаются сотни игр с распространёнными жанрами как: гонки, экшен, логические, RPG и другие. Также на данном движке разрабатываются программы для разных ОС:
- Windows и Windows Phone;
- Linux;
- Mac OS;
- IOS и Android;
- Браузерные игры, которые работают при поддержке плагина Unity Web Player и т.д.
В целом игра или приложение, независимо от того где она будет использоваться на ПК или смартфоне, состоит из комбинаций компьютерных инструкций и данных, позволяющая АВС (Автоматическая Вычислительная Машина) выполнять вычисления или функции управления, которые соответствуют определённому языку программирования. В этом и есть суть реализации потенциала и накопленной фантазии в создание своего проекта.
Для закрепления навыков нужна практика. Поэтому, давайте рассмотрим пример двухмерной игры «Гонки», где выбранное пользователем авто будет совершать движение по дороге.
Оглавление:
Подготовка рабочего места и поиск предметов игры
Персонажем, о котором будет идти речь, является «Машинка», выбрать можно любую, от грузовика до легковушки, а так же конечно, трек, по которому она будет двигаться — «Дорога». По треку машинка ехать не будет, в свою очередь движение зададим дороге, таким образом, создадим иллюзию движения. Главное, что бы проекция на предметы была сверху, а не сбоку.
Далее делаем вход и настройку системы:
- Запускаем приложение 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;
Так как предметы сцены притемнены, добавляем объект 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.
Робота над «игроком»
Перетаскиваем машинку на сцену и выставляем её размеры, и расположение для удобного пользования, при этом задаём в строке название 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 проверяем результат.
- переменная public float carSpeed = 5f, а также Rigidbody2D rb;
Добавление оппонентов
В сети нужно подыскать схожую по параметрам ещё одну машинку и перенести её в среду Unity. Добавляем компоненты:
- Расположив препятствие на игровой сцене, добавляем Box Collider 2D и редактируем по примеру игрока и разворачиваем на 180;
- Добавляем скрипт enemyMove с программированием кода для перемещения:
- public float Speed;
- speed = Random.Range (5f, 8f);
- transform.Translate (new Vector3 (0, 1, 0) * speed * Time.deltaTime);
- Дальше создаём пустой 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, в строку добавления объектов перетягиваем оппонента;
- Запускаем и наслаждаемся.
По сути, игра создана, в ней главный объект машинка имеет свойства передвижения, есть предметы на пути, которые нужно объезжать, присутствует эффект движения в роли которой выступает текстура дороги.
https://secure.gravatar.com/avatar/?s=56&d=wavatar&r=g
Большой выбор платных и бесплатных курсов по разработке игр на юнити https://katalog-kursov.ru/courses/kursy-unity/