Enhanced Input(향상된 입력)

2023. 3. 1. 15:31UnrealEngine/개념

https://docs.unrealengine.com/5.0/ko/enhanced-input-in-unreal-engine/

 

향상된 입력

향상된 입력 플러그인 개요

docs.unrealengine.com

언리얼 5.1 버전부터 기존 입력방법 대신 Enhanced Input(향상된 입력)방법이 적용되었다.

 

기존의 입력 방법은 프로젝트 세팅에서 축, 액션 매핑에 대한 키를 설정하여 클래스에서 각 매핑에 함수를 바인딩하여 동작을 구현하는 방법이었다면

 

향상된 입력은 값의 출력을 담당하는 '입력 액션'과 입력 액션을 특정 키에 바인딩해주는 '입력 매핑 컨텍스트'로 과정을 나누어서 보다 다양한 상황에서 통용되는 범용적인 동작방법을 디자인 할 수 있도록 설계되었다.

 

입력 액션, 입력 매핑 컨텍스트

 

입력 액션은 동작에 해당되는 함수와 바인딩 되어서 해당 동작(함수)에 값을 전달하는 역할을 해준다.

입력 액션 디테일 패널, 값 타입에 따라 다른 값을 전달 가능

 

입력 매핑 컨텍스트는 입력 액션들을 특정 키에 바인딩해주는 역할을 한다

트리거모디파이를 통하여 입력 액션이 함수에 전달하는 값을 변환할 수 있다

입력 매핑 컨텍스트의 디테일 패널, IA_Move를 W키에 바인딩

 

이렇게 설정된 입력 액션과 입력 매핑 컨텍스트는 다음과 같은 블루프린트로 폰에 추가되게 된다.

플레이어 컨트롤러에 존재하는 'EnhancedInputLocalPlayerSubsystem'에 작성한 입력 매핑 컨텍스트를 추가하는 방법이다.

AddMovementInput은 무시하자...


이러한 향상된 입력 방법을 C++로 사용하고자 한다면 다음과 같은 방법을 사용하면 된다.(5.11버전 기준)

 

1. EnhancedInput 모듈을 빌드파일에 추가

https://docs.unrealengine.com/4.26/en-US/API/Plugins/EnhancedInput/UEnhancedInputLocalPlayerSubsyst-/

 

2. 향상된 입력을 사용하고자하는 클래스의 헤더에 입력 매핑 컨텍스트와 입력 액션을 추가.

입력 액션과 바인딩될 함수의 파라미터는 FInputActionValue를 사용한다(InputActionValue.h 헤더 추가)

 

3. BeginPlay에서 매핑 컨텍스트를 EnhancedInputLocalPlayerSubsystem에 추가한다.(향상된 입력 관련 헤더파일 추가)

 

4. SetupPlayerInputComponent에서 인풋 액션에 동작할 함수를 바인딩한다.

(기존의 인풋 컴포넌트를 향상된 인풋 컴포넌트로 캐스트해야함)

(인풋 액션을 키에 바인딩하는건 인풋 매핑 컨텍스트에서 담당)

 

5. 입력 액션과 바인딩 된 함수를 구현

 

6. 블루프린트의 디테일 패널에서 입력 매핑 컨텍스트와 입력 액션을 지정


1)입력 매핑 컨텍스트를 통하여 키에 바인딩된 입력 액션이 호출.

2)입력 액션이 설정된 값을 반환.

3)클래스 내부에서 입력 액션과 바인딩된 함수는 반환값을 받아서 특정 동작을 수행.

입력 액션은 단순 연락처일 뿐 직접 동작하는 것이 아님에 유의하여야 한다.

 

입력 액션이 반환하는 값은 bool, float뿐 아니라 최대 3개의 독립된 부동 소수점 축을 반환할 수 있다.

이러한 점 때문에 함수가 받는 값을 struct로 사용하고 이전보다 더 유연한 입력방법을 구현할 수 있다.

'UnrealEngine > 개념' 카테고리의 다른 글

Unreal Foot IK  (0) 2023.03.07
IK(Inverse Kinematic, 역운동학)  (0) 2023.03.07
Class Default Object  (0) 2023.02.28
Character(=Pawn)의 AddMovementInput()  (0) 2022.09.20
Player Input  (0) 2022.09.13