Лесное преключение DEVLOG #1: Основы UI + Floating Arms
Итро
И так, настало время для первого дневника разработчика. Неделю назад я в подробностях рассказал историю моего проекта Forest Adventure, сейчас же напомню вкратце, что он из себя представляет.
Это шутер от первого лица с исследованием небольшой лесной локации. Приключение на вечерок. Целевая платформа — PC, движок — Unreal Engine.
Делаю я его один, поэтому девлоги будут состоять из двух частей
- мини отчет за последний период разработки.
- обзор механик, которые я уже давно сделал и/или разбор интересной для меня темы в рамках геймдева.
В этом девлоге речь пойдёт о пользовательском интерфейсе (UI) и ощущении живости рук в шутере от первого лица.
UI
На данном этапе я решил сосредоточиться на менюшках, не трогая HUD. Почти в любой игре они работают одинаково, поэтому нет никаких рисков. Эта работа точно не пропадёт.
В моей игре предполагаются три основных экрана
- Главное меню.
- Меню паузы.
- Меню отдыха у костра.
Сверстать их не составило проблем, и вот как они выглядят
Легко, но дальше интереснее, переходим к настройкам. Мне не хотелось захламлять десятками опций, но даже обходясь минимумом, у меня получилось 3 окна: основные настройки, настройки графики и настройки управления.
Настройки управления пока в процессе, в сязи с переводом проекта на новую систему ввода Enhanced Input. И по окончанию перевода, завезу управлением клавишами и геймпадом в меню, пока только мышь.
Настройки работают и сохраняются, могут возвращаться в первоначальное состояние.
Теперь посмотрим на приятности.
- Попапы подтверждения важных действий
- Анимации и звуки
Для завершения всех работ по менюшкам осталось закончить перевод на Enhanced Input, чем я и займусь на этой неделе.
Сейчас же перейдем к фиче, которую я сделал давным-давно.
Oщущении живости рук
Когда я сделал базовый функционал (прицеливание, переключение пушек, присяд и бег), я задумался над тем, как это ощущается. Всё выглядело вымученно и как-то деревянно.
Для оружия я захотел добавить веса, чтоб при его перемещении оно давало инерцию. Я нашел два способа это сделать — анимации и «нативный».
Анимации я сразу отбросил, ведь делать их долго и они будут работать только с одим скелетом, что я посчитал расточительством. И решил сделать по-своему.
Я сделал компонент, который отслеживает изменение скорости передвижения персонажа и изменение поворота. Теперь я знал, как и куда персонаж двигается, и мог спокойно это обрабатывать.
- Поворот рук в приседе. Имитируя недостаток пространства для рук (референс — приседание в Apex Legends).
- Наверное самое важное — поворот рук при повороте камеры.
- Реакция на передвижение передвижение. Смещение при движении вперед/назад и поворот при движении вправо/влево.
- Поворот рук при прыжке и приземлении.
Всё вместе смотриться вот так
У всех вышеперечисленных параметров отдельные настройки для режима прицеливания. Кроме этого, каждая пушка имеет свои настройки, чтоб передавать её вес.
Все значения будут редактироваться и подгоняться на этапе полишинга, так что клипы камеры в оружие надеюсь уйдут :)
Плюсом данной реализации является то, что я знаю как она работает и могу вертеть ей. С анимациями я бы умер.
Минус же — очень много параметров для настройки, на этапе полишинга я буду ругаться на себя :)
Если хотите сделать что-то подобное, вам понадобится FMath::Clamp() FMath::FInterpTo() FVector::VectorPlaneProject() FVector::DotProduct()
Тут буквально больше никакой логики.
Рекомендасьон
- Мой телеграм канал/чат, если хотите побольше пообщаться.
- Enhanced Input — это мощный плагин, которым эпики начинают заменять Input Component, что показывают их демо проекты на UE5
- Крутая статья с примерами работы Camera Shake, в том числе эффекты взрыва, получения урона, бега и многие другие.
- Небольшой разбор дизайнерских решений в Zelda: Breath of the Wild
Спасибо за внимание, буду рад обратной связи. Побежал работать дальше 🐗
Хорош
спасибо)
Выглядит отлично)
спасибо)
а как наклон применяется? к каким то костям меша?
вращается только меш целиком и сцен компонент, к которому меш прикреплен
никакой привязки к контенту, может быть любой меш
Управление выглядит отзывчиво, хотя возможно уровень тряски надо ещё полишить. лайк