Лесное преключение DEVLOG #1: Основы UI + Floating Arms

Лесное преключение DEVLOG #1: Основы UI + Floating Arms

Итро

И так, настало время для первого дневника разработчика. Неделю назад я в подробностях рассказал историю моего проекта Forest Adventure, сейчас же напомню вкратце, что он из себя представляет.

Это шутер от первого лица с исследованием небольшой лесной локации. Приключение на вечерок. Целевая платформа — PC, движок — Unreal Engine.

Делаю я его один, поэтому девлоги будут состоять из двух частей

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

В этом девлоге речь пойдёт о пользовательском интерфейсе (UI) и ощущении живости рук в шутере от первого лица.

UI

На данном этапе я решил сосредоточиться на менюшках, не трогая HUD. Почти в любой игре они работают одинаково, поэтому нет никаких рисков. Эта работа точно не пропадёт.

В моей игре предполагаются три основных экрана

  • Главное меню.
  • Меню паузы.
  • Меню отдыха у костра.

Сверстать их не составило проблем, и вот как они выглядят

Главное меню, Меню паузы, Меню отдыха<br />
Главное меню, Меню паузы, Меню отдыха

Легко, но дальше интереснее, переходим к настройкам. Мне не хотелось захламлять десятками опций, но даже обходясь минимумом, у меня получилось 3 окна: основные настройки, настройки графики и настройки управления.

Лесное преключение DEVLOG #1: Основы UI + Floating Arms

Настройки управления пока в процессе, в сязи с переводом проекта на новую систему ввода Enhanced Input. И по окончанию перевода, завезу управлением клавишами и геймпадом в меню, пока только мышь.
Настройки работают и сохраняются, могут возвращаться в первоначальное состояние.

Теперь посмотрим на приятности.

  • Попапы подтверждения важных действий
  • Анимации и звуки

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

Oщущении живости рук

Когда я сделал базовый функционал (прицеливание, переключение пушек, присяд и бег), я задумался над тем, как это ощущается. Всё выглядело вымученно и как-то деревянно.

Для оружия я захотел добавить веса, чтоб при его перемещении оно давало инерцию. Я нашел два способа это сделать — анимации и «нативный».
Анимации я сразу отбросил, ведь делать их долго и они будут работать только с одим скелетом, что я посчитал расточительством. И решил сделать по-своему.

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

  • Поворот рук в приседе. Имитируя недостаток пространства для рук (референс — приседание в Apex Legends).
  • Наверное самое важное — поворот рук при повороте камеры.
  • Реакция на передвижение передвижение. Смещение при движении вперед/назад и поворот при движении вправо/влево.
  • Поворот рук при прыжке и приземлении.

Всё вместе смотриться вот так

У всех вышеперечисленных параметров отдельные настройки для режима прицеливания. Кроме этого, каждая пушка имеет свои настройки, чтоб передавать её вес.

Все значения будут редактироваться и подгоняться на этапе полишинга, так что клипы камеры в оружие надеюсь уйдут :)
Плюсом данной реализации является то, что я знаю как она работает и могу вертеть ей. С анимациями я бы умер.
Минус же — очень много параметров для настройки, на этапе полишинга я буду ругаться на себя :)

Если хотите сделать что-то подобное, вам понадобится FMath::Clamp() FMath::FInterpTo() FVector::VectorPlaneProject() FVector::DotProduct()
Тут буквально больше никакой логики.

Рекомендасьон

Спасибо за внимание, буду рад обратной связи. Побежал работать дальше 🐗

99
8 комментариев

Хорош

1
Ответить

спасибо)

Ответить

Выглядит отлично)

1
Ответить

спасибо)

Ответить

а как наклон применяется? к каким то костям меша?

Ответить

вращается только меш целиком и сцен компонент, к которому меш прикреплен
никакой привязки к контенту, может быть любой меш

1
Ответить

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

Ответить