OverlordGameDev
Light Weight
- Депозит
- $0
Предисловие:
В данной статье будет описано, как реализовать управление и анимирование персонажа на игровом движке UE5. К выпуску планируется не одна статья, а гораздо больше; в каждой из них поэтапно можно будет наблюдать разработку любительского онлайн-проекта с использованием блокчейн-технологии. Статьи планируются в формате DevBlog – инструкции и только для форума XSS.isКак будет реализовано взаимодействие с блокчейном:
Взаимодействие будет реализовано через внутриигровую торговую площадку предметов. Чтобы было понятно, представьте площадку Стим, где игроки продают не просто скины, а игровые предметы с определенными характеристиками. В отличие от Стим, деньги — это не просто цифры в базе данных, а реальная криптовалюта, лежащая на кошельке пользователя, которую в любой момент можно вывести через обменник или же купить предмет у другого игрока. Посредником в передаче криптовалюты и предмета будет игровой сервер, который будет проверять транзакции. Если кратко, то данная система будет аналогична P2P.Почему Unreal Engine 5?
Данный движок был выбран из-за ряда плюсов перед Unity. Первым и главным плюсом в выборе движка была возможность простой реализации онлайн-составляющей, так как данный движок изначально разрабатывался для онлайн-игр. В нём буквально в пару кликов можно сделать онлайн-синхронизацию объектов. Вторым плюсом являлся удобный инструмент для ретаргета анимаций, благодаря которому можно легко переносить анимации с одного скелета на другой. Третьим и не менее важным плюсом для инди-разработчика являются условия соглашения пользования движком, а именно - разработчик может использовать движок абсолютно бесплатно и без каких-либо ограничений, если выручка с игры не превышает 1 000 000$. В Unity без покупки платной версии движка при запуске игры будет постоянно показываться логотип Unity, а это уже большой минус, не говоря уже о пользовательском соглашении, которое постоянно меняется не в лучшую сторону для пользователей.Порядок реализации механик в данной статье:
- Добавление Root Bone
- Прыжок и перемещение персонажа
- Анимирование персонажа
- Анимирование прыжка
- Добавление смены камеры третьего лица на первое и обратно
- Поворот тела вверх и вниз за камерой
- Добавление анимаций поворота персонажа на месте влево и вправо
- Бонус инструкция #1 (Смешивание двух анимаций в одну прямо в AnimGraph в StateMachine)
- Бонус инструкция #2 (Замена скелета у анимаций)
- Легкий наклон игрока при ходьбе с поворотом мыши в сторону
- IK для ног(сгибание колена и ступни при неровной поверхности)
P.S. Целью этого проекта является показать, что реализовать крипто-проект с полноценными механиками и онлайн-составляющей, а не подобие «Хомяка» (который сделан только ради хайпа и заработка), вполне возможно, если есть желание.
Необходимое ПО:
- Unreal Engine 5
- Blender
Подготовка среды разработки:
Unreal Engine 5. Это движок, на котором и будет разрабатываться данный проект. Чтобы его получить, нужно зарегистрироваться в Epic Games по этой ссылке: https://www.epicgames.com/id/login. После регистрации потребуется скачать официальный лаунчер.После установки движка потребуется его запустить и создать проект.
Подготовка материала:
Первое, что нам понадобится в игре, — это объект, которым будет управлять игрок. В нашем случае это будет гуманоидный тип, а если точнее, человек в стилистике «Тиби». Что такое “Тиби”: если кратко, то «Тиби» — это персонаж в аниме-стилистике гуманоидного типа, маленького роста и непропорционально большой головой.Моделирование персонажа:
- Показывать процесс моделирования я не стану, так как это достаточно долгий процесс и больше подходит для видеоуроков.
Когда модель будет готова, ей необходимо добавить скелет. Для создания и привязки скелета к модели нужно немало времени и знаний, но есть простой вариант добавить кости любой гуманоидной модели. Для этого существует сайт под названием Mixamo: https://www.mixamo.com/.
P.S. На данном сайте потребуется регистрация или авторизация с помощью Google-аккаунта. После авторизации потребуется загрузить модель персонажа на сайт.
Критерии к модели персонажа:
Модель должна быть в формате FBX или OBJ. Также модель персонажа должна состоять из одного объекта, то есть модель персонажа, одежда, волосы и т.д. должны быть одним объектом, а не несколькими. Если модель подходит по критериям, её можно загрузить на сайт, и после загрузки модели потребуется распределить контрольные точки для костей, как показано в инструкции на сайте:После этого на модель автоматом накладываются кости, но с ними все равно придется работать и улучшать скелет, но об этом позже. После того как модель загружена, и у нее есть кости, потребуется ее скачать.
Теперь необходимы анимации, которые будут проигрываться при перемещении персонажа, а именно:
- Стойка
- Бег вперед
- Бег назад
- Бег влево
- Бег вправо
- Бег вправо назад
- Бег влево назад
При скачивании анимаций движения нужно ставить эту галочку, чтобы персонаж двигался на месте:
После скачивания всех необходимых анимаций и модели нужно их немного доработать, а именно: добавить Root-кость анимациям и персонажу.
P.S. Root-кость нужна для того, чтобы в дальнейшем сделать IK для ног. Об этом будет рассказано в конце статьи, но кость нужно добавить на начальном этапе, так как если сделать это потом, придется заменять все модели и анимации в проекте на новые, а это достаточно долго, если проект уже имеет приличное количество функционала.
Добавление Root Bone:
Для того чтобы добавить Root-кость к персонажу и анимациям, нужно скачать Blender и плагин для него:Что такое Blender?
Blender — это программа для 3D моделирования и анимирования. Программа абсолютно бесплатная, и скачать её можно с официального сайта или в Steam.
В первую очередь нужно скачать и установить плагин: GitHub - enziop/mixamo_converter: Blender addon for converting mixamo animations to Unreal 4 rootmotion
После скачивания нужно открыть Blender и нажать на кнопку Edit/Preferences.
Далее необходимо выбрать путь до zip архива скачанного с GitHub
После установки плагина в правой части интерфейса программы появится новое меню, и в нем необходимо убрать абсолютно все галочки:
Необходимо выбрать папку, в которой у нас лежат анимации и модель персонажа, выбираем папку, в которую будут сохранены новые версии анимаций и модели. После этого нужно нажать на кнопку “Batch Convert”:
На этом добавление Root-кости закончено. Теперь нужно перенести все эти материалы в проект. Для этого в проекте создайте папку Character, в ней папку Models и папку Animations. Затем перенесите в соответствующие папки материалы. Первым нужно перенести модель персонажа, затем уже анимации. При переносе анимаций нужно выбрать скелет загруженного персонажа, чтобы к анимациям сразу привязалась модель.
После подготовки первичных материалов для игры можно начинать делать управление персонажу.
Прыжок и перемещение персонажа:
Первое что нужно сделать это назначить клавиши управления:В назначении действий нужно добавить Jump:
В назначении осей нужно добавить движение вперед/назад (MoveFB) и влево/вправо:
Теперь так же нужно сделать и для движения мышью:
После настройки клавиш нужно перейти в папку Character, нажать правую кнопку мыши и выбрать BluePrint Class:
Теперь нужно создать еще одну папку с названием GameMods, также создать в ней BluePrint но другого типа:
Затем нужно зайти в него и выбрать персонажа, а именно - BluePrint, который был сделан первым. После этого сохраняем и закрываем это окно
Далее в правом верхнем углу экрана нужно нажать на настройки и открыть вкладку параметра мира (нашей сцены):
Затем нужно найти вкладку GameMode и перетащить туда второй BluePrint (GameMods):
После этого нужно перейти в первый BluePrint (Character):
Перейдите в меш и в его свойствах добавьте скелет персонажа. При необходимости подстройте размеры меша и поворот под размеры капсулы.
- Если нужно поменять толщину или высоту капсулы то перейдите в ее свойства и меняйте эти параметры:
Теперь в компонентах добавьте Spring Arm. Это такой луч, на который нужно прикрепить камеру. Это нужно для того, чтобы если между игроком и камерой будет стена, этот луч будет сокращать расстояние, чтобы быть у персонажа за плечом, а не за стенкой.
Далее таким же образом нужно добавить внутрь этого компонента камеру:
Теперь нужно зайти в Event Graph:
Нужно кликнуть правой кнопкой мыши в пространстве и выбрать Event нажатия кнопок вперед и назад, которые мы делали ранее при назначении клавиш.
Также нужно сделать для влево и вправо (InputAxis отвечает за непрерывные нажатия, то есть удержание кнопки).
Затем нужно вызвать функцию “Add Movement Input” (функция отвечает за передвижение любого объекта) и связать её с ивентом. В параметр Value передается значение, которое указывали при создании ивентов для клавиш, то есть 1 и -1.
Затем нужно вызвать функцию Get Control Rotation (функция для получения направления, куда смотрит объект, в нашем случае персонаж) и из неё вытянуть Break Rotator (разбивает направление на X, Y, Z).
P.S. Объект, чье направление получает Get Control Rotation, — это объект, в чьем BluePrint вы сейчас находитесь.
Затем из World Direction нужно вытянуть вектора. Для ходьбы вперед или назад нужен вектор Forward, для влево и вправо нужен вектор Right.
После этого нужно вытянуть из векторов Make Rotator и из него вытянуть Z, а затем соединить его с Break Rotator.
Добавлю комментарии для большей ясности того, как устроено передвижение по определенным направлениям (комментарии добавляются нажатием буквы "C"):
Теперь можно перейти на сцену и запустить проект. Персонаж сможет двигаться, но пока не умеет поворачивать мышью, и анимации ещё не работают, так что теперь нужно добавить управление мышью. Для этого нужно вызвать ивенты для мыши, которые создавали при добавлении клавиш для управления:
Теперь нужно привязать к ним функции Pitch (отвечает за наклон камеры вверх или вниз) и Yaw (отвечает за поворот камеры влево или вправо):
Теперь персонаж может поворачивать камеру влево и вправо. Чтобы он поворачивал вверх и вниз, нужно перейти во вкладку, где находится луч, к которому привязана камера, и затем в его настройках поставить необходимую галочку:
Теперь нужно сделать прыжок. Для этого нужно вернуться обратно в Event Graph и вызвать ивент Input Action (Input Action отвечает за клик на кнопку, а не удержание, как в случае Input Axis).
Из него нужно вытянуть 2 функции, jump и stop jump (готовые функции для механики прыжка предоставляемые движком).
На этом с прыжком закончено и начальное управление уже готово, теперь нужно добавить механику проигрывания анимаций при передвижении и прыжке.
P.S Т.к на форуме есть ограничение по количеству загружаемых картинок, придется разделить статью на много частей, эти части будут ниже в виде сообщений в данной теме