Створюємо 2D платформер за допомогою Unreal Engine 4. Частина 1 - Ігровий персонаж, рух

Не так давно компанія Epic Games зробила неймовірно щедрий подарунок всім бажаючим — движок UE4 з вихідним кодом усього за $20/міс, вважай даром! Скористаємося їх щедрістю і великодушністю і спробуємо створити що-небудь не дуже складне, але, принаймні, більш-менш іграбельне — 2D платформер.

Насамперед нам знадобляться:
  • спрайт персонажа
  • текстури платформ
Оскільки особисто я малювати не вмію зовсім, та й не в цьому наша мета, скористаємося ресурсами чудової гри Castlevania: Symphony of the night", в якій головним героєм є Алукард, син Дракули. Нескладно знайти на просторах мережі повну розкадрування персонажа — то що нам потрібно!
Повна розкадровка Alucard'а

Давайте підготуємо розкадровки для 2х станів: спокій і біг, для цього необхідно видалити червоний фон (адже нам не треба, що б персонаж переміщався завжди на тлі червоного прямокутника) і вирізати потрібні частини зображення, отримуючи на виході щось на зразок цього:



І цього:



З фонових зображень поки вирізаємо тільки стать:
Довга і нудна текстура підлоги
З підготовкою все, тепер приступаємо до створення проекту та імпорту джерел. В останніх версіях UE4 була додана можливість відразу створити 2D Side Sroller (blueprint), скористаємося їй, не забувши забрати стартовий контент — там досить багато матеріалів та об'єктів, які нам зараз не потрібні. За замовчуванням нам дають вже готового до пробіжці манекена і пару платформ, все це нам не потрібно, так що видаляємо.
Базовий контент
Структуруємо папки проекту і імпортуємо відповідні зображення:



Далі необхідно з текстур витягти, власне, спрайт. Зробити це можна двома способами: автоматично, вручну, зауважу, що з автоматичемским витягом може бути один нюанс: спрайт будуть пронумеровані за зростанням, але зовсім не обов'язково, що нумерація буде відповідати їх положенням у вихідній текстурою, так що після вилучення рекомендую все ретельно перевірити, що б згодом не було артефактів анімацій. Оскільки у нас все ж урок, зробимо все вручну.

Насамперед створюємо ще пару татусів, на цей раз у «Sprites» → «Alucard», всередині якої папки «Idle» та «Walking» з відповідними спрайтами Отже, створюємо порожній спрайт, називаємо його «Idle_1» і відкриваємо. Відразу ж переходимо в «Edit source region», а в якості текстури-джерела вказуємо текстуру «Alucard_Idle».



Один спрайт повинен містити один кадр анімації персонажа, так що скоригуємо значення «Source UV» та «Source dimension», що б отримати один кадр, або просто двічі клікаємо на зображення потрібно, що б автоматично визначити його межі:



Проробляємо те ж саме з рештою кадрами спокою і ходьби:



З текстури платфоми так само створюємо спрайт, але, оскільки там все одне зображення можна зробити через контекстне меню.

Саме час додати трохи життя нашим спрайтам! Для цього створюємо «Animation flipbook», даємо йому ім'я і відкриваємо. Додаємо відповідні кадри по порядку і виставляємо кількість кадрів в секунду за смаком, мені подобається 6:



Повторюємо для ходьби і на виході маємо 2 flipbook'а:



Тепер додамо на сцену нашу платформу, важливо що в її становищі компонента Y дорівнювала 0. Далі додамо управління (у заготівлі воно вже включено, але переназначим, як нам буде зручно:): Edit → Project Setting → Input.



Переходимо безпосередньо до створення персонажа. У папці «Blueprints» створюємо новий BP, нас запитають, який клас принта, вибираємо «Character», даємо ім'я, відкриваємо і прямуємо в розділ «Components». Додає до капсулі Flipbook, в якості джерела вибираємо заготовлену Idle анімацію, так само додаємо SpringArm і до неї чіпляємо камеру, в принципі можна обійтися і без руки, але краще з нею. Налаштовуємо розміри спрайтів та капсули по смаку, але капсулу краще робити трохи менше, що б спрайт не ширяв над землею. У камери прибираємо залежність від контролера і виставляємо ортографический тип, глибину — за смаком.



Компілюємо, зберігаємо. У налаштуваннях світу можна створити свій GameMode, або поміняти у вже існуючому «Default Pawn Class» на тільки що створеного нами персонажа.



Тепер можна запустити і переконатися, що ми все зробили правильно і що наш персонаж нетерпляче очікує наказів.



Настав час навчити його пересуватися, для цього знову відкриваємо BP персонажа і переходимо в розділ графа. Варто відзначити, що Blueprints — дуже потужний інструмент, з його допомогою можна обійтися в проекті без класичного написання коду, але насправді це те ж саме програмування, просто, власне, писати треба буде хіба що кілька імен, так значень. Отже, насамперед треба додати рух по вектору при події MoveRight:



Тут відбувається наступне: при впливі на вісь (у нас може бути два впливу ± 1) відбувається пересування об'єкта по осі X на заданий вплив. В принципі цього достатньо для пересування, можна пробувати — компілюємо, зберігаємо, тестуємо. Персонаж зміщується вздовж осі, але без анімації, адже ми не передбачили її переключення.

Для перемикання між анімаціями нам необхідно замінити, власне анімацію в flipbook нашого персонажа. Зробити це можна кількома способами, але я віддаю перевагу найбільш універсальний і, як мені здається, витончений. Створимо на графі Свою подію, назвемо відповідно мети — «Update animation».



Логіка роботи тут наступна: при виклику події в flipbook мети поміщається задана анімація. Сама анімація вибирається в залежності від того, яка швидкість у нашого об'єкта, якщо більше нуля — анімація ходьби, інакше — спокою. Оновимо і граф руху:



З'явилося нове подія — «Event Tick», воно відбувається кожен кадр, відповідно кожен кадр у нас тепер відбувається перевірка необхідності зміни анімації. Якщо зараз запустити гру, то персонаж буде рухатися з анімацією бігу, але завжди буде дивитися в одну сторону, виправимо це:



Підсумковий результат:



Таким чином сьогодні ми створили анімованого 2D персонажа, здатного переміщатися по платформі. Надалі додамо здатність стрибати, боротися і знищувати ворогів. Побажання, коментарі і критика вітаються.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.