Михаил Ли

Михаил Ли 

Художник-Мультипликатор

64subscribers

204posts

goals1
$15.13 of $1 587 raised
На Azure Kinect

Unreal Engine - Разработка ч.42 - Продвинутое управление (Enhanced Inputs) - Input Modifiers

Input Modifiers - это препроцесс который изменяет значения raw input которое UE получает прежде чем отправить их в Input Trigger. EIS поставляется с различными модификаторами ввода (далее IM) для решения задач таких как смена оси направления или имплементация "dead zones", конвертации оси ввода в мировые значения и ещё несколько других. Чуть позже я расскажу зачем нам может понадобиться менять значения оси направления.

Каждый ввод ассоциированный с Input Action внутри Input Mapping Context проходит через череду определяемых пользователем IM прежде чем попасть к Input Trigger, и исполняется модификация в порядке котором они расположены. Значение первого модификатора после изменения передается в следующий и так далее.

Хорошим примером использования Input Modifiers является система передвижения с помощью WASD, а так же джойстика. Давайте разберем на примере нашего тестового проекта что в ней происходит и что мы можем с этим делать.

Внутри нашего контекста мы найдем уже заготовленные Input Actions:
Если мы откроем IA_Move то увидим уже заготовленный перечень кнопок:
Внутри к примеру "W" мы найдем следующую информацию:
Зная то как проходит поток даты - мы можем проанализировать что происходит. Помните мы говорили про то что IA могут принимать разные типы данных. В случае c IA_Move мы принимаем двухмерный вектор:
Тем не менее мы уже знаем что нажатие клавиши передает только два значения 1 когда нажата и 0 когда отжата, а так же мы уже знаем что оси по которым поступает дата заполняются по мере поступления, другими словами если мы в вектор подадим значение, то это значение всегда будет подаваться в первый компонент вектора, в нашем случае это будет координата X. Зная систему координат UE мы можем смело утверждать что передача значения в X координату не будет отвечать тому что мы хотим сделать с клавишей "W", она обычно ассоциируется с движением вперед. Тут то модификаторы и идут в дело. Давайте ещё раз взглянем на них:
Первым в таблице выступет модификатор Swizzle Input Axis Values. Он служит "перенаправляющим" элементом который позволяет подавать значения в нужную нам координату из нужного нам инпута. Внутри своего индекса у него лежат настройки которые позволяют нам выбрать нужную координату для получения нужного нам результата:
В нашем случае всё стоит корректно. Я хочу чтобы при нажатии на "W" мой персонаж двигался вперед, а это значит что я должен получать значение в Y координату, чего я и добиваюсь используя модификатор Swizzle Input Axis Values. Окей. Давайте посмотрим чуть дальше - в "S":
Здесь так же всё понятно. Первым в списке идет модификатор Swizzle Input Axis Values который помогает нам трансформировать передачу X координаты в Y, после чего вторым в списке стоит модификатор Negate который отрицает значение. То есть мы подали 1 с клавиши и он её модифицирует в -1. Тем самым мы добиваемся того что персонаж может перемещаться и по -Y координате. Давайте посмотрим на "A":
Эта клавиша имеет только один модификатор Negate. Мы уже знаем как идет поток данных и поэтому понимаем что подавая 1 с клавиатуры мы по факту подаем 1 в X координату вектора, а модификатор Negate позволяет превратить эту 1 в -1 тем самым давая возможность перемещаться в "лево". Что же с "D"?
"D" не имеет модификаторов так как мы подаем 1 в X координату и именно это нам и нужно чтобы добиться движения в "право".

Что же на счёт, например, мышки:
Если мы зайдем в IA_Look то увидим что XY вектор мышки имеет при себе модификатор Negate. Мы уже знаем что IA_Look принимает в себя двумерный вектор. Если мы раскроем индекс Negate то увидим следующие настройки:
Мы увидим что мы "отрицаем" Y координату. Нужно это для того чтобы добиться эффекта когда мы ведем мышку вверх она поднималась вверх а не опускалась вниз и наоборот. Не забывайте что ваша мышка считывает данные на двумерной сисетеме координат и движение вверх, на самом деле, в контексте игры привело бы к опускании камеры в низ. Некоторые людям так нравится поэтому разработчики оставляют опцию инвертирования просмотра мышкой "открытой" для редактирования из меню настроек игры.

Дальше поговорим про Триггеры
Subscription levels2
Subscription Spots Are Limited

Малая открывашка

$13.3 per month
Дает доступ ко всему контенту, но дешевле

Большая открывашка

$26.5 per month
Открывает доступ к блогу и всем его постам + помощь в решении ваших задач пару раз в месяц
Go up