언리얼 엔진 5 (Unreal Engine 5) – Enhanced Input 시스템 개요
Unreal Engine 5 (UE5)의 Enhanced Input 시스템은 기존 입력 시스템을 대체하는 새로운 방식으로, 더욱 유연하고 강력한 입력 처리 및 매핑 기능을 제공합니다. 이 시스템을 통해 게임 개발자는 입력 장치와 사용자 동작을 보다 직관적이고 효율적으로 처리할 수 있으며, 복잡한 입력 조합 및 재설정 가능한 키 설정을 구현할 수 있습니다.
역사 및 소개 (History and Introduction)
언리얼 엔진은 이전부터 강력한 게임 개발 플랫폼으로 자리 잡아왔으며, Enhanced Input 시스템은 기존 입력 시스템의 제한 사항을 개선하기 위해 개발되었습니다. 전통적인 입력 시스템에서는 키보드, 마우스, 게임패드 등을 각각 독립적으로 처리했으나, 이 과정에서 복잡한 입력 조합이나 다중 장치 입력에 대한 관리가 어려웠습니다.
언리얼 엔진 5의 Enhanced Input 시스템은 이러한 문제를 해결하며, 특히 플레이어 경험을 극대화할 수 있는 재설정 가능한 입력 기능과 다양한 장치 간의 동시 입력 처리를 더욱 쉽게 제공합니다.
개념 (Concept)
Enhanced Input 시스템의 중심 개념은 Input Action(입력 액션)과 Input Mapping Context(입력 매핑 컨텍스트)입니다.
- 입력 액션 (Input Action): 플레이어의 특정 동작(예: 점프, 이동, 공격 등)을 의미하는 논리적 단위입니다. 입력 액션은 단순한 버튼 입력뿐만 아니라, 복합적인 조작(예: 버튼 누름, 축 움직임 등)도 처리할 수 있습니다.
- 입력 매핑 컨텍스트 (Input Mapping Context): 다양한 입력 장치의 입력을 입력 액션에 매핑하는 역할을 합니다. 이를 통해 특정 상황이나 상태에서만 특정 입력이 활성화되도록 설정할 수 있습니다.
이 시스템은 또한 여러 장치에서 발생하는 입력을 동시에 처리하거나 복잡한 입력 조합을 쉽게 구현할 수 있는 기능을 제공합니다.
원리 (Principle)
Enhanced Input 시스템은 UE5 Input Subsystem과 상호작용하며, 플레이어의 입력을 보다 체계적으로 처리합니다. 입력은 다음과 같은 순서로 처리됩니다:
- 입력 액션 정의: 각 동작을 정의하는
Input Action
객체를 생성합니다. - 입력 매핑: 입력 장치(키보드, 마우스, 게임패드 등)에서의 실제 입력을
Input Mapping Context
를 통해 해당 액션에 매핑합니다. - 입력 처리: 입력이 발생하면
Input Action
이 해당 이벤트를 트리거하여, 게임 로직이 실행됩니다.
이 시스템은 이전 입력 시스템보다 더 정교하고 세밀한 입력 관리가 가능하며, 재설정 가능한 입력과 다중 입력 처리에 강점을 보입니다.
주요 함수 및 구성 요소 (Key Functions and Components)
- UInputAction:
Input Action
을 정의하는 클래스입니다. 사용자는 버튼 누름, 마우스 클릭, 축 움직임 등의 다양한 이벤트를 설정할 수 있습니다. - UInputMappingContext: 입력 장치의 입력을
Input Action
에 매핑하는 역할을 합니다. - UEnhancedInputComponent: 캐릭터나 플레이어 컨트롤러에 부착되어, 입력 이벤트를 처리하고 매핑된 입력 액션을 처리합니다.
- FInputActionValue: 입력된 값을 나타내는 객체로, 이동 벡터, 회전 값 등 다양한 형태의 값을 처리할 수 있습니다.
사용법 (Usage)
1. 입력 액션 생성 (Creating Input Action)
먼저, 프로젝트 내에서 새로운 Input Action을 생성합니다.
Content Browser
에서 우클릭 -> Input -> Input Action을 선택하여 새 액션을 생성합니다.- 예를 들어, 캐릭터 이동을 처리하는 액션을
MoveAction
이라고 명명합니다.
2. 입력 매핑 컨텍스트 생성 (Creating Input Mapping Context)
입력 매핑 컨텍스트를 생성하여 다양한 장치의 입력을 처리할 수 있습니다.
Input Mapping Context
를 생성하고,PlayerMapping
이라는 이름을 부여합니다.PlayerMapping
에서MoveAction
을 키보드의W
,A
,S
,D
키와 게임패드의 조이스틱에 매핑합니다.
3. 캐릭터 블루프린트 또는 C++ 코드에서 설정 (Configuring in Character Blueprint or C++)
블루프린트 사용:
Enhanced Input
컴포넌트를 캐릭터 블루프린트에 추가합니다.- Begin Play 이벤트에서
PlayerMapping
을 캐릭터의 Enhanced Input Component에 적용합니다. - 입력 이벤트를 받아서 캐릭터 이동을 처리합니다.
C++ 코드 사용:
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { if (UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(PlayerInputComponent)) { // MoveAction을 입력 처리 EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AMyCharacter::Move); } } void AMyCharacter::Move(const FInputActionValue& Value) { FVector2D MovementVector = Value.Get<FVector2D>(); // 입력된 벡터 값 AddMovementInput(FVector(MovementVector.X, MovementVector.Y, 0.0f)); // 캐릭터 이동 처리 }
예제 (Examples)
- 단순 점프 액션: 버튼을 눌렀을 때 캐릭터가 점프하는 기능을 설정할 수 있습니다.
JumpAction
을 생성하고, 특정 버튼을 점프 액션에 매핑한 후 캐릭터의Jump()
함수를 호출하도록 설정합니다.
- 다중 입력 처리: “Shift + W”와 같은 복합 입력을 설정하여 대시(dash) 기능을 추가할 수 있습니다.
- Chording 기능을 사용하여 복합 키 입력에 대해 별도의 액션을 실행할 수 있습니다.
활용 예시 (Usage Examples)
Enhanced Input 시스템을 활용하면 플레이어의 입력 경험을 개선할 수 있습니다. 예를 들어, 다양한 입력 장치를 사용하는 멀티플랫폼 게임에서 플랫폼에 맞는 입력 시스템을 유연하게 적용할 수 있으며, 복합 입력이나 조정 가능한 키 매핑을 통해 사용자 경험을 개인화할 수 있습니다.