unreal engine 4 редактор персонажа

Создание настоящего вида от первого лица в Unreal Engine 4 Статьи редакции

С анимированным телом персонажа.

Технический художник Фабрик Пике (Fabrice Piquet) из компании Allegorithmic в блоге на сайте Gamasutra рассказал, как в Unreal Engine 4 создать «настоящий» вид от первого лица, при котором камера двигается в соответствии с движением головы персонажа. Мы выбрали главное из материала.

«Настоящий вид от первого лица» предполагает, что камера «закреплена» на анимированном теле персонажа, в отличие от простой «летающей» камеры. Такой подход использовался, например, в The Chronicles of Riddick, Syndicate и Mirror’s Edge.

В «раздельной» системе две руки персонажа независимы от тела и присоединены непосредственно к камере. Это позволяет напрямую анимировать руки для любой ситуации и не беспокоиться о том, что камера не следует за руками. Остальное тело персонажа, как правило, это независимый меш, имеющий собственный набор анимаций. Минус такого подхода в том, что разработчикам приходится анимировать два набора моделей.

Порой, меши тела видны только игрокам, а полная версия туловища используется для того, чтобы отрисовывать тени (она видна также другим игрокам в мультиплеере, как в последних Call of Duty). Это помогает оптимизации, однако вредит погружению.

Меш полного тела (Full-body Mesh) предполагает, что весь персонаж будет состоять всего из одного меша. При этом камера присоединена к его голове. Её позиция или вращение диктуется движениями тела, их не нужно настраивать вручную. Иерархия класса выглядит так.

PlayerContorller всегда находится выше Character (или Pawn) в Unreal, поэтому тут ничего нового. У персонажа есть меш тела, у которого имеется AnimBlueprint для управления анимациями. Наконец, камера, которая присоединена к мешу в конструкторе. Однако это не всё.

Так как камера управляется мешем, нам нужно модифицировать или анимировать меш, чтобы имитировать обычные движения камеры, такие как взгляд вверх, вниз, влево и вправо. Эти движения создаются с помощью дополнительной анимации на один кадр.

Я использовал 10 анимаций, но вы можете сделать и больше, если вам, например, хочется, чтобы персонаж смотрел назад. В моём случае вместе с поворотом головы, поворачивается и тело (как в Mirror’s Edge). Это потребовало создание дополнительных анимаций.

Как только анимации импортированы в Unreal, нужно настроить несколько вещей. Убедитесь, что базовая поза для анимаций названа правильно, чтобы быстро найти её, когда потребуется. Я назвал её «anim_idle_additive_base».

Затем, я открыл другие позы и изменил несколько свойств во вкладке «Additive Settings». Параметр «Additive Anim Type» я установил на «Mesh space», а «Base Pose Type» — на «Selected Animation». Наконец, я загрузил мою анимацию базовой позы в слот ассетов. Все эти действия надо повторить для каждой позы.

Теперь, когда анимации готовы, нужно создать Aim Offset — ассет, который хранит связи между несколькими анимациями и позволяет переключаться между ними в зависимости от введенных параметров. Полученное добавляется поверх существующей анимации (вроде бега, ходьбы и так далее).

Мой Aim Offset учитывает два параметра ввода: Pitch и Yaw. Эти значения управляются обновлениями игрового кода.

Источник

Epic Games выпустила подробную документацию по созданию реалистичных персонажей в игровом движке Unreal Engine 4. В качестве примера приведён персонаж Дуплет (ранее Твинбласт) из игры Paragon, MOBA от Epic на PC и PS4.

Создание аутентичных, правдоподобных персонажей является фундаментальной задачей для многих современных 3D художников и разработчиков игр. В течение последних нескольких лет Epic привносит в UE4 новые функции рендеринга, которые улучшают шейдинг кожи, глаз, волос и других атрибутов персонажа.

Skin Shading

Кожа представленного ниже персонажа сделана благодаря UE4 Subsurface Profile.

unreal engine 4 редактор персонажа. 0320. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0320. картинка unreal engine 4 редактор персонажа. картинка 0320. С анимированным телом персонажа.

Это специальный метод используется для рендера реалистичной кожи или воска, он аналогичен методу «Subsurface«, но имеет принципиальное отличие в том, как он визуализирует: Subsurface Profile основан на пространстве экрана. Рендеринг экранного пространства более эффективен для отображения тонких эффектов слоёв кожи, где рассеивание при отражении является вторичным эффектом, которое наблюдается только в нескольких случаях, например, на ушах.

Обратите внимание на использование Material Functions для настройки основы материала кожи. Это делается как многоразовый авторский подход к созданию материалов для персонажей из Paragon. Таким образом, художники могут стандартизировать подходы к созданию определенных типов поверхностей, зная, что изменение одной функции будет обновлять все элементы, в которых она используется.

Skin Shader Textures

Текстуры, используемые на коже персонажа, имеют разрешение 4K и первоначально были получены благодаря сканированию лица актера. Текстуры были затем очищены и изменены художниками из Epic. Эта настройка кожи использует пять текстурных карт: Diffuse, Roughness, Specularity, Scatter и Normal.

Диффузная текстура поставляет базовый цвет для материала. Если приблизить 4K, то можно заметить крошечные капилляры. Любое потемнение морщин будет подчеркивать Normal Map.

Карта Roughness сохраняется в альфа канале Diffuse карты. Это общий метод, используемый для уменьшения количества текстур. Обратите внимание, что шероховатость увеличивается в местах с порами и морщинами. Это заставляет эти области казаться менее блестящими, подчеркивая глубину Diffuse и Normal карт.

Карта рассеивания отвечает за то, как много света будет рассеиваться на поверхности кожи. Темные участки, такие как щеки, практически не будут рассеивать свет, в то время как светлые зоны носа и ушей, изображенные на фото, будут рассеивать свет. Цвет рассеивания управляется в Subsurface Profile Asset.Normal Map

Карта нормалей отвечает за «объемность» модели, увеличивая визуальную детализацию объекта без использования дополнительных полигонов. В этом примере нет никаких необычных настроек.

Hair Shading

Чтобы начать работу с шейдером, установите параметр Shading Model вашего материала на Hair.

unreal engine 4 редактор персонажа. 0326. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0326. картинка unreal engine 4 редактор персонажа. картинка 0326. С анимированным телом персонажа.

Волосы и блики

В реальном мире волосы обладают несколькими бликами: один представляет собой цвет света, а другой является смесью цвета волос и светлого цвета. Для упрощения мы будем называть эти блики первичными и вторичными. UE4 Hair Shader показывает очень реалистичный результат с теми же эффектами.

unreal engine 4 редактор персонажа. 0327. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0327. картинка unreal engine 4 редактор персонажа. картинка 0327. С анимированным телом персонажа.

1. Более светлые волосы являются первичными бликами. 2. Более яркие и рыжие волосы представляют вторичные блики.

Алгоритм аппроксимации, используемый в UE4 Hair, создаёт эти эффекты аналогично тому, как они сделаны в реальном мире. Когда свет попадает на волосяной фолликул, он не просто отталкивается от поверхности. Волосы просвечиваются, они позволяют пропускать через них некоторый свет, после чего свет отталкивается и выходит за пределы. Шейдер для волос достигает такого результата благодаря трем возможным путям движения света, как показано на анимированном GIF ниже:

unreal engine 4 редактор персонажа. 0328. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0328. картинка unreal engine 4 редактор персонажа. картинка 0328. С анимированным телом персонажа.

Смотрите таблицу ниже, в которой описывается каждая часть процесса.

ТекстурыНазваниеОписание
unreal engine 4 редактор персонажа. 0321. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0321. картинка unreal engine 4 редактор персонажа. картинка 0321. С анимированным телом персонажа.Diffuse

Направление роста (от корня до кончика) волосяного фолликула.

Только отражающийся луч, отталкивающийся от поверхности. Это создаёт первичный блик.

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

Путь, по которому свет проникает в волосяной фолликул, отражается от внутренней границы поверхности, а затем выходит. Это создаёт вторичный блик.

Как показано на диаграмме выше, прядь волос не является идеальным цилиндром или трубой. На самом деле волосы выглядят как сложенные конусы. Это значит, что свет, отталкивающийся от поверхности волос, будет рассеиваться совсем по-другому, чем, если бы волосы были идеально гладкими. UE4 шейдер поддерживает анизотропное отражение.

Волосы и их прозрачность

unreal engine 4 редактор персонажа. 0329. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0329. картинка unreal engine 4 редактор персонажа. картинка 0329. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. 0330. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0330. картинка unreal engine 4 редактор персонажа. картинка 0330. С анимированным телом персонажа.

Использование анимированного сглаживания с помощью TemporalAA требует нескольких кадров для разрешения смешивания. Это может привести к артефактам на волосах, когда они находятся в движении. Это ожидаемый побочный эффект данной техники.

Edge Masking

unreal engine 4 редактор персонажа. 0331. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0331. картинка unreal engine 4 редактор персонажа. картинка 0331. С анимированным телом персонажа.

Чтобы решить эту проблему, материал должен вычислять вектор камеры, а также вектор плоскости таким образом, чтобы, когда плоскость поворачивалась перпендикулярно вектору камеры, она начинала исчезать. Для заполнения исчезнувшего полигона нужно сделать голову таким образом, чтобы её скальп был текстурой волос. Вот почему многие персонажи с широкими полигонами волос имеют такую текстуру на голове, как показано на изображении ниже.

unreal engine 4 редактор персонажа. 0332. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0332. картинка unreal engine 4 редактор персонажа. картинка 0332. С анимированным телом персонажа.

Создание волос для игрового персонажа

Перед тем как создать геометрию волос, следует посмотреть, как команда Epic конструирует волосы для игровых персонажей.

Геометрия волос

Данная геометрия создана с помощью нескольких плейнов, расположенных по всей поверхности головы, что является стандартным решением во многих real-time движках.

Нет никаких жестких правил для детализации геометрии волос вашего персонажа, но следует отметить, что Дуплет использует около 800 отдельных плейнов, в общей сложности около 18000 треугольников. Также обратите внимание, что материал для волос установлен двусторонний в свойствах Material Node Properties.

unreal engine 4 редактор персонажа. 0333. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0333. картинка unreal engine 4 редактор персонажа. картинка 0333. С анимированным телом персонажа.

Текстуры волос

При использовании UE4 Hair шейдера конечный результат достигается следующими текстурами: Diffuse, Depth, Alpha, Root и Unique ID. В Epic эти текстуры обычно генерируются с помощью системы волос 3ds Max, которая проецирует имитируемые волосы на кусок геометрии. Однако есть много других вариантов для подобных результатов.

НомерОписание
0

Диффузная текстура отвечает за базовый цвет самих волос. Желательно оставлять эту текстуру неокрашенной, а цвет задавать в самом движке, особенно это полезно в тех случаях, если волосы персонажа будут иметь разные цвета.

Альфа текстура обеспечивает прозрачность тех участков, где нет текстуры волос.

Текстура Root является маской для изменения цвета волос от корня до кончика. Полезна при осветлении или затемнении волос по их длине.

Текстура глубины используется как основа для изменения цвета или значений шейдера для волос на различных глубинах.

Текстура The Unique ID просто дает уникальное значение от 0 до 1 (от черного до белого) для каждой пряди на заданной части геометрии волос. Это используется для обеспечения различной вариации волос.

Свойства Hair Shader

Когда вы будете использовать Hair Shader, то увидите новые свойства, доступные в ноде материала: Scatter, Tangent и Backlit.

Scatter

Одна из основных причин, почему мы говорим о шейдере волос как об аппроксимации, а не о симуляции, заключается в том, что он не симулирует каждую отдельную прядь волос и не имитирует совершенно точное поведения лучей света. В реальном мире, когда свет отскакивает и передается через волосяные фолликулы, он часто встречается с другими прядями волос, повторяя один и тот же процесс много раз подряд. В настоящее время нет вычислительной техники, способной точно производить такие эффекты в реальном времени.

Тем не менее, рассеивание света по-прежнему имеет решающее значение для того, насколько реалистичными окажутся волосы в игре. Чтобы контролировать это, Hair Shader имеет параметр Scatter, который заменяет Metallic основного нода шейдера и ограничивается значениями от 0.0 до 1.0. Scatter контролирует, сколько света проходит на всех волосах персонажа, как если бы это была одна поверхность.

unreal engine 4 редактор персонажа. 0340. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0340. картинка unreal engine 4 редактор персонажа. картинка 0340. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. 0341. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0341. картинка unreal engine 4 редактор персонажа. картинка 0341. С анимированным телом персонажа.

Важно отметить, что Scatter должен быть светлее для светлых волос и темнее для более темных волос. В реальном мире более темные волосы будут поглощать больше света. С практической точки зрения, если вы пытаетесь создать светловолосого персонажа, то вы заметите, что изменение диффузной текстуры или цвета недостаточно; Вам также придется увеличить значение Scatter.

Tangent

unreal engine 4 редактор персонажа. 0342. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0342. картинка unreal engine 4 редактор персонажа. картинка 0342. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. 0343. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0343. картинка unreal engine 4 редактор персонажа. картинка 0343. С анимированным телом персонажа.

На этом изображении желтая линия представляет вектор вдоль пряди волос, направленный к корню.

Flow Maps

Другой метод требует создания Flow карты. Это будет полезно, если волосы вашего персонажа длинные, а также они должны казаться изгибающимися и завитыми больше, чем фактическая геометрия, или если отдельные участки текстуры для волос ориентированы по-разному (не сверху вниз, как описано выше). В проекте Photoreal Character Bust вы можете найти неиспользованную Flow карту с именем T_Hair_Flow. Ниже приведено сравнение этой карты и финального результата.

unreal engine 4 редактор персонажа. 0344. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0344. картинка unreal engine 4 редактор персонажа. картинка 0344. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. 0345. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0345. картинка unreal engine 4 редактор персонажа. картинка 0345. С анимированным телом персонажа.

Здесь вы можете увидеть, как текстурирована Flow Map на примере волос Сойки (Sparrow). Обратите внимание, что карта используется только на некоторых участках, а не на всей голове.

Использование Pixel Depth Offset и Hair Shader

Pixel Depth Offset (PDO) не является свойством, уникальным для Hair Shader. С точки зрения непрофессионала, PDO заставляет пиксели отдаляться от камеры, создавая искусственное ощущение глубины. Так как волосы состоят из простых плейнов, как описано в разделе «Волосы и геометрия«, использование PDO может обеспечить ощущение глубины формы волос в целом.

unreal engine 4 редактор персонажа. 0346. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0346. картинка unreal engine 4 редактор персонажа. картинка 0346. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. 0347. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0347. картинка unreal engine 4 редактор персонажа. картинка 0347. С анимированным телом персонажа.

Вторая часть статьи о создании реалистичного персонажа в Unreal Engine 4, в которой будет подробно описано создание глаз, можете посмотреть здесь: Devgam.com.

Редакция Devgam

Благодарим наших читателей и подписчиков за проявленный интерес. Поделитесь постом в социальных сетях.

Источник

Создаем 2D платформер при помощи Unreal Engine 4. Часть 1 — Игровой персонаж, движение

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Из фоновых изображений пока вырезаем только пол:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Структурируем папки проекта и импортируем соответствующие изображения:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Далее необходимо из текстур извлечь, собственно, спрайты. Сделать это можно двумя способами: автоматически и вручную, замечу, что с автоматичемским извлечением может быть один нюанс: спрайты будут пронумерованы по возрастанию, но совсем не обязательно, что нумерация будет соответсвовать их положению в исходной текстуре, так что после извлечения рекомендую все тщательно проверить, что бы впоследствии не было артефактов анимаций. Поскольку у нас все же урок, сделаем все вручную.

Первым делом создаем еще пару папочек, на этот раз в “Sprites” → “Alucard”, внутри которой будут папки “Idle” и “Walking” с соответствующими спрайтами. Итак, создаем пустой спрайт, называем его “Idle_1” и открываем. Сразу же переходим в “Edit source region”, а в качестве текстуры-источника указываем текстуру «Alucard_Idle».

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Один спрайт должен содержать один кадр анимации персонажа, так что скорректируем значения “Source UV” и “Source dimension”, что бы получить один кадр, либо просто дважды кликаем на нужно изображение, что бы автоматически определить его границы:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Проделываем то же самое с оставшимися кадрами покоя и ходьбы:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Из текстуры платфомы так же создаем спрайт, но, поскольку там всего одно изображение можно сделать просто через контекстное меню.

Самое время придать немного жизни нашим спрайтам! Для этого создаем “Animation flipbook”, даем ему имя и открываем. Добавляем соответствующие кадры по порядку и выставляем количество кадров в секунду по вкусу, мне нравится 6:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Повторяем для ходьбы и на выходе имеем 2 flipbook’а:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Переходим непосредственно к созданию персонажа. В папке “Blueprints” создаем новый BP, нас спросят, какой класс принта, выбираем “Character”, даем имя, открываем и направляемся в раздел “Components”. Добавляет к капсуле Flipbook, в качестве источника выбираем заготовленную Idle анимацию, так же добавляем SpringArm и к ней цепляем камеру, в принципе можно обойтись и без руки, но лучше с ней. Настраиваем размеры спрайтов и капсулы по вкусу, но капсулу лучше делать немного поменьше, что бы спрайт не парил над землей. У камеры убираем зависимость от контроллера и выставляем ортографический тип, глубину — по вкусу.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Компилируем, сохраняем. В настройках мира можно создать свой GameMode, либо поменять в уже существующем “Default Pawn Class” на только что созданного нами персонажа.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Пора научить его передвигаться, для этого вновь открываем BP персонажа и переходим в раздел графа. Стоит отметить, что Blueprints – очень мощный инструмент, с его помощью можно обойтись в проекте без классического написания кода, но на деле это то же самое программирование, просто, собственно, писать надо будет разве что несколько имен, да значений. Итак, прежде всего надо добавить движение по вектору при событии MoveRight:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

Для переключения между анимациями нам необходимо заменить, собственно анимацию в flipbook нашего персонажа. Сделать это можно несколькими способами, но я предпочитаю наиболее универсальный и, как мне кажется, изящный. Создадим на графе Свое событие, назовем соответственно цели – “Update animation”.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Появилось новое событие — “Event Tick”, оно происходит каждый кадр, соответственно каждый кадр у нас теперь происходит проверка необходимости смены анимации. Если сейчас запустить игру, то персонаж будет двигаться с анимацией бега, но всегда будет смотреть в одну сторону, исправим это:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

UPD 1. По совету пользователя Torvald3d убрал билинейную интерполяцию на текстурах-исходниках персонажа. Просто заходим в импортированную текстуру и меняем фильтр на «ближайший».

Источник

Туториал по Unreal Engine. Часть 2: Blueprints

unreal engine 4 редактор персонажа. 9ed57764f0b4a31d902011b0b919e575. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-9ed57764f0b4a31d902011b0b919e575. картинка unreal engine 4 редактор персонажа. картинка 9ed57764f0b4a31d902011b0b919e575. С анимированным телом персонажа.

Blueprints — это система визуального скриптинга Unreal Engine 4. Она является быстрым способом создания прототипов игр. Вместо построчного написания кода всё можно делать визуально: перетаскивать ноды (узлы), задавать их свойства в интерфейсе и соединять их «провода».

Кроме быстрого прототипирования, Blueprints также упрощают создание скриптов для непрограммистов.

В этой части туториала мы будем использовать Blueprints для следующих операций:

В этой части также используются векторы. Если вы с ними незнакомы, то рекомендую эту статью про векторы на gamedev.net.

Примечание: эта статья является одной из восьми частей туториала, посвящённого Unreal Engine:

Приступаем к работе

Скачайте начальный проект и распакуйте его. Чтобы открыть проект, перейдите в папку проекта и откройте BananaCollector.uproject.

Примечание: если откроется окно, сообщающее, что проект создан в более ранней версии Unreal editor, то всё в порядке (движок часто обновляется). Можно или выбрать опцию создания копии, или опцию преобразования самого проекта.

На рисунке ниже показана сцена. Именно в ней игрок будет перемещаться и собирать предметы.

unreal engine 4 редактор персонажа. 2d9f390f90a11761d5a0ca0a9545db07. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-2d9f390f90a11761d5a0ca0a9545db07. картинка unreal engine 4 редактор персонажа. картинка 2d9f390f90a11761d5a0ca0a9545db07. С анимированным телом персонажа.

Для простоты навигации я разбил файлы проекта на папки, как показано на рисунке:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Выделенную красным кнопку можно использовать, чтобы показать или скрыть панель исходников.

Создание игрока

В Content Browser перейдите к папке Blueprints. Нажмите на кнопку Add New и выберите Blueprint Class.

Мы хотим, чтобы актор получал вводимую игроком информацию, поэтому нам подходит класс Pawn. Выберите во всплывающем окне Pawn и назовите его BP_Player.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Примечание: класс Character тоже подойдёт. В нём даже по умолчанию есть компонент перемещения. Однако мы будем реализовывать собственную систему движения, поэтому класса Pawn нам достаточно.

Прикрепление камеры

Камера — это способ игрока смотреть на мир. Мы создадим камеру, смотрящую на игрока сверху вниз.

В Content Browser дважды нажмите на BP_Player, чтобы открыть его в Blueprint editor.

Для создания камеры перейдите на панель Components. Нажмите на Add Component и выберите Camera.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Чтобы камера смотрела сверху вниз, нужно расположить её над игроком. Выбрав компонент камеры, перейдите во вкладку Viewport.

Активируйте манипулятор перемещения, нажав клавишу W, а затем переместите камеру в (-1100, 0, 2000). Или же можно ввести координаты в поля Location. Она находится в разделе Transform панели Details.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Если вы потеряли камеру из виду, нажмите клавишу F, чтобы сфокусироваться на ней.

Затем активируйте манипулятор поворота, нажав клавишу E. Поверните камеру вниз на -60 градусов по оси Y.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Отображаем игрока

Мы обозначим персонажа игрока красным кубом, поэтому для его отображения нужно будет использовать компонент Static Mesh.

Во-первых, снимите выделение с компонента Camera, нажав левой клавишей мыша на пустом пространстве в панели Components. Если этого не сделать, то следующий добавленный компонент будет дочерним по отношению к камере.

Нажмите на Add Component и выберите Static Mesh.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Чтобы отобразить красный куб, выберите компонент Static Mesh, а затем перейдите во вкладку Details. Нажмите на раскрывающийся список, находящийся справа от Static Mesh и выберите SM_Cube.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Вы должны увидеть следующее (можно нажать F внутри Viewport, чтобы сфокусироваться на кубе, если вы его не видите):

unreal engine 4 редактор персонажа. b01cf7e2dd8b6d7c69ab2a4b55c8c81a. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-b01cf7e2dd8b6d7c69ab2a4b55c8c81a. картинка unreal engine 4 редактор персонажа. картинка b01cf7e2dd8b6d7c69ab2a4b55c8c81a. С анимированным телом персонажа.

Теперь настало время заспаунить актора Pawn игрока. Нажмите на Compile и вернитесь к основному редактору.

Спаун игрока

Чтобы игрок мог управлять Pawn, нужно указать две вещи:

Создание Game Mode

Класс Game Mode (игровой режим) — это класс, управляющий тем, как игрок входит в игру. Например, в многопользовательской игре Game Mode используется для задания спауна каждого игрока. Что более важно, Game Mode определяет. какой Pawn будет использовать игрок.

Перейдите к Content Browser и зайдите в папку Blueprints. Нажмите на кнопку Add New и выберите Blueprint Class.

Во всплывающем меню выберите Game Mode Base и назовите его GM_Tutorial.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь нужно указать, какой класс Pawn будет использоваться по умолчанию. Дважды нажмите на GM_Tutorial, чтобы открыть его.

Перейдите на панель Details и загляните в раздел Classes. Нажмите на раскрывающийся список Default Pawn Class и выберите BP_Player.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Чтобы использовать новый Game Mode, нужно сообщить уровню, какой Game Mode он должен использовать. Это можно указать в World Settings. Нажмите на Compile и закройте Blueprint editor.

Каждый уровень имеет собственные параметры. Получить доступ к этим параметрам можно, выбрав Window\World Settings. Или же можно зайти в Toolbar и выбрать Settings\World Settings.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Рядом со вкладкой Details откроется новая вкладка World Settings. В ней нажмите на раскрывающийся список GameMode Override и выберите GM_Tutorial.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь вы увидите, что классы сменились на те, которые выбраны в GM_Tutorial.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Наконец, нам нужно задать точку спауна игрока. Это реализуется размещением на уровне актора Player Start.

Размещение Player Start

В процессе спауна игрока Game Mode ищет актор Player Start. Если Game Mode находит его, то предпринимает попытку заспаунить игрока там.

Чтобы разместить Player Start, перейдите к панели Modes и найдите Player Start. Нажмите левой клавишей и перетащите Player Start из панели Modes во Viewport. Отпустите левую клавишу мыши, чтобы разместить его.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Можете разместить его где угодно. Когда закончите, перейдите в Toolbar и нажмите Play. Вы будете заспаунены в точке расположения Player Start.

unreal engine 4 редактор персонажа. 2a25b0cdc05f02d3edea1583a5335f60. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-2a25b0cdc05f02d3edea1583a5335f60. картинка unreal engine 4 редактор персонажа. картинка 2a25b0cdc05f02d3edea1583a5335f60. С анимированным телом персонажа.

Чтобы выйти из игры, нажмите кнопку Stop в Toolbar или нажмите клавишу Esc. Если вы не видите курсор, нажмите Shift+F1.

Это не похоже на игру, если мы не можем двигаться. Наша следующая задача — настроить параметры ввода.

Настройка ввода

Назначение клавиши действию называется привязкой клавиши.

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

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

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

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Если мы будем задавать клавиши жёстко, то нам придётся заходить в каждый актор и менять клавиши отдельно.

Привязка осей и действий

Чтобы перейти к параметрам ввода, зайдите в Edit\Project Settings. В разделе Engine выберите слева Input.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

В разделе Bindings выполняется настройка ввода.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Unreal предоставляет два способа создания привязок клавиш:

Создание привязок движения

Во-первых, мы создадим две группы привязки осей. Группы позволяют привязывать несколько клавиш к одному событию.

Для создания новой группы привязки осей нажмите на значок + справа от Axis Mappings. Создайте две группы и назовите их MoveForward и MoveRight.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

MoveForward будет управлять движением вперёд и назад. MoveRight будет управлять движением влево и вправо.

Мы привяжем движение к четырём клавишам: W, A, S и D. Пока у нас есть только два слота для привязки клавиш. Добавим к каждой группе ещё одну привязку осей, нажав на значок + рядом с полем имени группы.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Чтобы привязать клавишу, нажмите на раскрывающийся список с перечислением клавиш. Привяжите клавиши W и S к MoveForward. Привяжите клавиши A и D к MoveRight.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь нужно задать значения в полях Scale.

Значение оси и масштаб ввода

Перед заданием полей Scale нам нужно больше узнать о том, как работать со значениями осей.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Мы можем использовать значение оси для управления скоростью Pawn. Например, если мы нажмём стик до упора, то значение оси будет 1. Если нажать наполовину, то значение будет 0.5.

Умножая значение оси на переменную скорости, мы можем регулировать с помощью стика скорость движения.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Также значение оси можно использовать для задания направления вдоль оси. Если умножить скорость Pawn на положительное значение оси, то мы получим положительное смещение. При использовании отрицательного значения оси получим отрицательное смещение. Прибавляя это смещение к местонахождению Pawn, мы задаём направление его движения.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Клавиши клавиатуры могут подавать на выход только значения 1 или 0, то можно использовать scale для преобразования их в отрицательные числа. Это можно сделать, взяв значение оси и умножив его на масштаб.

Умножив положительное (значение оси) на отрицательный (масштаб), мы получим отрицательное значение.

Задайте масштаб клавиш S и A, нажав на поле Scale и введя -1.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь начинается интересное: заставим Pawn двигаться! Закройте Project Settings и откройте BP_Player в Blueprints editor, дважды нажав на него.

Перемещение игрока

Сначала нам нужно выбрать события для привязок движения. Нажмите правой клавишей мыши на пустом пространстве в Event Graph, чтобы открыть список нодов. Найдите в этом меню MoveForward. Добавьте нод MoveForward из списка Axis Events. Учтите, что вам нужен красный нод в Axis Events, а не зелёный нод в Axis Values.

Повторите процесс для MoveRight.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь мы настроим ноды для MoveForward.

Использование переменных

Для перемещения необходимо указать, с какой скоростью будет двигаться Pawn. Один из простых способов указания скорости — хранение её в переменной.

Чтобы создать переменную, зайдите во вкладку My Blueprint и нажмите на значок + в правой части раздела Variables.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Выбрав новую переменную, перейдите во вкладку Details. Измените имя переменной на MaxSpeed. После этого замените тип переменной на Float. Для этого нужно нажать на раскрывающийся список рядом с Variable Type и выбрать Float.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь необходимо задать значение по умолчанию. Но чтобы его задать, нужно будет нажать Compile в Toolbar.

Выбрав переменную, перейдите ко вкладке Details. Зайдите в раздел Default Value и измените значение MaxSpeed по умолчанию на 10.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Затем перетащите переменную MaxSpeed из вкладки My Blueprint на Event Graph. Выберите из меню пункт Get.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь нужно умножить MaxSpeed на значение оси, чтобы получить конечную скорость и направление. Добавим нод float * float и присоединим к нему Axis Value и MaxSpeed.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Получение направления игрока

Чтобы двигаться вперёд, нам нужно знать, куда смотрит Pawn. К счастью, в Unreal есть для этого нод. Добавьте нод Get Actor Forward Vector.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Затем добавьте нод Add Movement Input. Этот нод получает направление и значение, преобразуя их в хранимое смещение. Соедините ноды следующим образом:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Белая линия обозначает цепочку выполнения. Другими словами, когда игрок перемещает ось ввода, то генерируется событие, выполняющее нод InputAxis MoveForward. Белая линия показывает, что после этого выполняется нод Add Movement Input.

Нод Add Movement Input получает на входе следующие данные:

unreal engine 4 редактор персонажа. 924b75cbc84954907020f9cec352cb3b. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-924b75cbc84954907020f9cec352cb3b. картинка unreal engine 4 редактор персонажа. картинка 924b75cbc84954907020f9cec352cb3b. С анимированным телом персонажа.

Добавление смещения

Чтобы действительно двигать Pawn, нам нужно получить смещение, вычисленное Add Movement Input, и прибавить его к местоположению Pawn.

В сущности, наша стратегия будет заключаться в перемещении игрока на небольшую величину в каждом кадре игры, поэтому нам нужно добавить перемещение к событию Event Tick, которое генерируется каждый кадр.

Перейдите к ноду Event Tick в Event Graph. Он должен быть неактивным и находиться слева, но если его нет, то создайте нод самостоятельно.

unreal engine 4 редактор персонажа. e82a337d85656585a0e109a46521f9ad. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-e82a337d85656585a0e109a46521f9ad. картинка unreal engine 4 редактор персонажа. картинка e82a337d85656585a0e109a46521f9ad. С анимированным телом персонажа.

Чтобы получить смещение, создадим нод Consume Movement Input Vector. Чтобы прибавить смещение, создадим нод AddActorLocalOffset. После этого соединим их следующим образом:

unreal engine 4 редактор персонажа. 91283d46e5280dde831fba9c92ef0322. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-91283d46e5280dde831fba9c92ef0322. картинка unreal engine 4 редактор персонажа. картинка 91283d46e5280dde831fba9c92ef0322. С анимированным телом персонажа.

Это означает, что в каждом кадре игры мы будем сохранять весь ввод перемещения и прибавлять его к текущему местоположению актора.

Нажмите Compile, перейдите к основному редактору и нажмите на Play. Теперь вы можете двигаться в сцене!

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Однако у нас есть небольшая проблема. Мощные компьютеры могут рендерить кадры с большей частотой. Event Tick вызывается каждый кадр, поэтому ноды перемещения будут выполняться чаще. Это значит, что Pawn будет двигаться на мощных компьютерах быстрее, и наоборот.

Чтобы решить эту проблему, наше движение должно быть независимым от частоты кадров.

Примечание: я настроил привязки клавиш, чтобы показать влияние зависимости от частоты кадров. Нажмите 0, чтобы ограничить частоту 60 кадрами в секунду, и нажмите 1, чтобы снять ограничение. Попробуйте перемещаться при обоих частотах кадров и вы заметите разницу в скорости.

Независимость от частоты кадров

Независимость от частоты кадров означает, что мы постоянно будем получать одинаковые результаты, вне зависимости от частоты кадров. К счастью, достичь такой независимости в Unreal очень просто.

Выйдите из игры, а затем откройте BP_Player. Затем перейдите к узлу Event Tick и посмотрите на Delta Seconds.

unreal engine 4 редактор персонажа. 072de4450dc2c5da4bd99eb8f5e281ca. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-072de4450dc2c5da4bd99eb8f5e281ca. картинка unreal engine 4 редактор персонажа. картинка 072de4450dc2c5da4bd99eb8f5e281ca. С анимированным телом персонажа.

Delta Seconds — это величина времени, прошедшего после предыдущего Event Tick. Умножив смещение на Delta Seconds, мы сделаем перемещение независимым от частоты кадров.

Например, наш Pawn имеет максимальную скорость 100. Если после предыдущего Event Tick прошла одна секунда, то Pawn переместится на полные 100 единиц. Если прошли полсекунды, то он переместится на 50 единиц.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Если движение зависимо от частоты кадров, то Pawn будет перемещаться на 100 единиц в каждом кадре, вне зависимости от времени между кадрами.

Чтобы умножить смещение на Delta Seconds, добавьте нод vector * float. После этого соедините ноды следующим образом:

unreal engine 4 редактор персонажа. 11e876279b9cfcbb46e6378019585c2e. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-11e876279b9cfcbb46e6378019585c2e. картинка unreal engine 4 редактор персонажа. картинка 11e876279b9cfcbb46e6378019585c2e. С анимированным телом персонажа.

Время между кадрами (Delta Seconds) очень мало, поэтому Pawn будет двигаться намного медленнее. Это можно исправить, заменив значение MaxSpeed по умолчанию на на 600.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Поздравляю вам удалось добиться независимости от частоты кадров!

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Можно заметить, что куб проходить сквозь все объекты. Чтобы исправить это, нам нужно познакомиться с коллизиями.

Надевайте шлем, потому что сейчас нам придётся столкнуться с теорией!

Коллизии актора

Когда мы вспоминаем о столкновениях, то представляем автомобильные аварии. К счастью, коллизии в Unreal намного безопаснее.

Чтобы иметь возможность сталкиваться с объектами, актору нужно обозначение его пространства столкновений (обычно называемого коллизией). Можно использовать одно из следующих пространств:

unreal engine 4 редактор персонажа. da897d87293e5bdf2a2aebc2d302f575. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-da897d87293e5bdf2a2aebc2d302f575. картинка unreal engine 4 редактор персонажа. картинка da897d87293e5bdf2a2aebc2d302f575. С анимированным телом персонажа.

Коллизия происходит, когда коллизия актора касается коллизии другого актора.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь настало время включить коллизии.

Включение коллизий

Вы, наверно, недоумеваете, почему куб не сталкивается с объектами, хотя у него есть меш коллизии. При перемещении актора Unreal учитывает для коллизий только корневой компонент. Поскольку корневой компонент Pawn не имеет коллизии, он проходит сквозь все объекты.

Примечание: актор, не имеющий коллизии в корневом компоненте, всё равно может блокировать других акторов. Но если перемещать актора, то он не будет ни с чем сталкиваться.

Итак, чтобы использовать меш коллизии, StaticMesh должен быть корневым. Для этого перейдите в панель Components. Затем зажмите левую клавишу мыши и перетащите StaticMesh на DefaultSceneRoot. Отпустите левую клавишу мыши, чтобы сделать StaticMesh новым корневым компонентом.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Чтобы коллизии начали работать, нужно выполнить ещё одно действие. Переключитесь на Event Graph и перейдите к узлу AddActorLocalOffset. Найдите вход Sweep и измените значение на true, нажав левой клавишей мыши на флажок.

unreal engine 4 редактор персонажа. 9d66d96bfcf36cfab10d1ae1503d01f9. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-9d66d96bfcf36cfab10d1ae1503d01f9. картинка unreal engine 4 редактор персонажа. картинка 9d66d96bfcf36cfab10d1ae1503d01f9. С анимированным телом персонажа.

AddActorLocalOffset занимается тем, что телепортирует актора в новое место. Sweep гарантирует, что актор будет сталкиваться со всем, что находится между старым и новым местоположением.

Перейдите в основной редактор и нажмите на Play. Теперь куб будет реагировать на коллизии с уровнем!

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Последнее, что мы создадим — это предмет, исчезающий при контакте с персонажем игрока.

Создание предмета

В общем случае предметом является любой собираемый игроком объект. Мы используем в качестве предмета BP_Banana.

Чтобы распознать контакт куба и предмета, нам нужен нод события, срабатывающего при коллизии. Для генерирования таких событий можно использовать реакции на коллизи.

Реакция на коллизию также определяет, как актор реагирует на коллизию с другим актором. Существует три типа реакций на коллизии: Ignore, Overlap и Block. Вот как они взаимодействуют друг с другом:

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Хотя здесь можно использовать и Overlap, и Block, в этом туториале мы будем использовать только Overlap.

Задание реакции на коллизию

Закройте игру и откройте BP_Banana. Выберите компонент StaticMesh, а затем перейдите в панель Details. Реакции на коллизии задаются в разделе Collision.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Как вы видите, большинство параметров неактивно. Чтобы сделать их изменяемыми, нажмите на раскрывающийся список рядом с Collision Presets. Выберите в списке Custom.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Теперь нам нужно указать реакцию на коллизию между предметом и кубом.

Компоненты имеют атрибут под названием object type (тип объекта). Тип объекта — это просто удобный способ группировки похожих акторов. Подробнее о типах объектов можно прочитать здесь.

Куб имеет тип WorldDynamic, поэтому нам нужно изменить реакцию на коллизию этого типа. В разделе Collision Responses измените реакцию на коллизию WorldDynamic на Overlap. Это можно сделать, нажав на средний флажок справа от WorldDynamic.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Обработка коллизий

Для обработки коллизий нужно использовать событие наложения. Перейдите в панель Components и нажмите правой клавишей мыши на StaticMesh. В контекстном меню выберите Add Event\Add OnComponentBeginOverlap.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Так мы добавим в Event Graph нод OnComponentBeginOverlap (StaticMesh).

unreal engine 4 редактор персонажа. 0f50993fb540f5b61a8dd0132bff101e. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0f50993fb540f5b61a8dd0132bff101e. картинка unreal engine 4 редактор персонажа. картинка 0f50993fb540f5b61a8dd0132bff101e. С анимированным телом персонажа.

Наконец, создадим нод DestroyActor и соедините его с нодом OnComponentBeginOverlap (StaticMesh). Как можно догадаться по названию, он удаляет целевой актор из игры. Однако поскольку целевого актора нет, он уничтожит актор, вызвавший его.

unreal engine 4 редактор персонажа. 50d021e6f92fdd50d49916f7677357e8. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-50d021e6f92fdd50d49916f7677357e8. картинка unreal engine 4 редактор персонажа. картинка 50d021e6f92fdd50d49916f7677357e8. С анимированным телом персонажа.

Размещение предмета

Закройте Blueprint editor и перейдите в папку Blueprints.

Начните располагать бананы на уровне зажав левую клавишу мыши и перетаскивая BP_Banana во Viewport.

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Нажмите Play и начните собирать бананы!

unreal engine 4 редактор персонажа. image loader. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-image loader. картинка unreal engine 4 редактор персонажа. картинка image loader. С анимированным телом персонажа.

Куда двигаться дальше?

Готовый проект можно скачать отсюда.

Вы сделали ещё один шаг к тому, чтобы стать специалистом по Unreal Engine.

Если вы хотите продолжить обучение, то прочитайте следующий пост в серии, где мы подробнее рассмотрим материалы Unreal Engine.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ТекстураНазваниеОписание
unreal engine 4 редактор персонажа. 0334. unreal engine 4 редактор персонажа фото. unreal engine 4 редактор персонажа-0334. картинка unreal engine 4 редактор персонажа. картинка 0334. С анимированным телом персонажа.Diffuse