Unreal Engine - Разработка ч.48 - Продвинутое управление (Enhanced Inputs) - Конвертируем проект ч.4
Окей. В прошлый раз мы сделали камеру нашему павну, теперь было бы не плохо добавить возможность смотреть нашим павном по сторонам. Учитывая то что мы уже знаем все необходимые этапы для связывания инпута и логики, это не должно составить особого труда, но есть пара моментов которые я бы хотел проговорить.
Для начала дайвайте сделаем новый IA и назовем его IA_Look:
Меняем его тип данных с булевого на Axis2D. Этот тип данных позволит получать значения по XY координатам:
Далее мы создаем контекст:
В контексте мы можем выбрать отдельно X и Y координаты если того требует задумка, или выбрать XY. Так же я заранее на Y ось повешу модификатор Negate для того чтобы избежать "Inverted Mouse" эффекта:
После чего в .h файле нашего павна, мы как обычно создаем указатель на наш IA и a функцию которую мы будем исполнять в момент активации контекста:
Она точно так же как и Move будет брать в себя какое то значение и что то с ним делать в своём теле. Прежде наполнить тело функции я свяжу наш IA, контекст и EnhancedInputComponent:
Добив строчку с BindActioт в тело функции плеер инпута. Далее я наполню функцию Look:
Что я сделал. По сути это аналог вот этой функции:
Только с небольшими изменениями. Во первых тип константы FVector2D - этот тип имеет в себе 2 компоненты. Одна для X координаты другая для Y, оба значения нормализированны. Я создаю константу типа FVector2D и определяю ей значение равное значению прототипу функции Get к которой мы получаем доступ через конструктор класса. в Get мы так же подаем FVector2D так как это нужный нам тип данных. После чего исполняем условие оператора if. Если существует контроллер сначала исполни функцию AddControllerYawInput и в неё мы подаем значение нашей константы по X. Yaw это X в UE. Если забыли что это такое почитайте тут про вещатели в UE. После AddControllerPitchInput подав в неё консонанту по Y. Само собой Pitch и Yaw все не ограничивается. Мы можем использовать весь спектр вращателей, но это потребует иного способа работы с данными:
Компилим, заходим в проект и сразу бежим в BP указывать наш IA:
Теперь когда наш указатель не висит осталось в этом же BP дать возможность павну принимать инпуты по ротаторам:
После чего мы запускаем проект и тестим:
Теперь мы можем летать вперед и назад а так же смотреть по сторонам таким образом мы родили, хоть и ограниченный, но игровой контроллер. Дальше мы пойдем глубже, так как по сути своей серия про Pawn закончена и мы переходим к самому большому классу в UE - Character.
#ue5