Unreal Engine 5 (UE5) – Enhanced Input 시스템
Unreal Engine 5의 Enhanced Input 시스템은 이전 버전의 입력 시스템을 대체하는 더 강력하고 유연한 입력 처리 방식입니다. 이 시스템은 사용자가 키보드, 마우스, 게임패드 등 다양한 입력 장치에서 동작을 쉽게 매핑할 수 있도록 하며, 입력 컨텍스트, 복잡한 입력 조합 및 사용자 재설정 가능한 입력을 보다 효과적으로 지원합니다.
Enhanced Input 시스템의 주요 기능:
- 입력 액션 (Input Actions):
- 입력 액션은 버튼을 누르거나, 조이스틱을 움직이거나, 마우스를 드래그하는 것과 같은 사용자 동작을 정의하는 이벤트입니다. 액션은 단순한 버튼 클릭부터 복잡한 조합 입력까지 다양한 입력을 처리할 수 있습니다.
- 입력 매핑 (Input Mapping Context):
- 입력 매핑은 특정 상황에 맞는 입력 설정을 정의하는 역할을 합니다. 이를 통해 플레이어가 게임 내 특정 상태에 있을 때만 특정 입력을 사용할 수 있도록 제한할 수 있습니다. 예를 들어, 캐릭터가 차를 타고 있을 때만 “운전”과 관련된 입력이 활성화되도록 설정할 수 있습니다.
- 다양한 장치 지원:
- Enhanced Input 시스템은 키보드, 마우스, 게임패드 등의 다양한 입력 장치를 지원하며, 각 장치에 맞는 입력 설정을 개별적으로 정의할 수 있습니다. 특히, 여러 장치를 동시에 사용하는 복합 입력 시스템을 쉽게 설정할 수 있습니다.
- 입력 조합 (Chording):
- 여러 입력을 동시에 눌러야 하는 복합 입력을 처리하는 기능입니다. 예를 들어, “Shift + W”로 대시(dash) 기능을 수행하거나, “Ctrl + Click”으로 특별한 액션을 실행하는 경우입니다.
- 재설정 가능한 입력 (Rebindable Input):
- 사용자가 직접 입력을 설정하고 재설정할 수 있는 기능을 제공합니다. 이를 통해 사용자가 게임 내에서 자신의 입력 환경을 자유롭게 커스터마이징할 수 있습니다.
예제: Enhanced Input 설정하기
다음은 기본적인 Enhanced Input 시스템을 사용하여 플레이어 캐릭터에 이동 기능을 추가하는 예제입니다.
1. Input Action Asset 생성
먼저, 프로젝트 내에서 입력을 정의할 Input Action을 생성해야 합니다.
Content Browser
에서 Input Action을 생성합니다. (우클릭 -> Input -> Input Action)- 새로 생성한 액션을
MoveAction
이라고 명명합니다.
2. Input Mapping Context 생성
입력 매핑을 설정하기 위해 Input Mapping Context를 생성합니다.
Input Mapping Context
를 생성하고, 이름을PlayerMapping
으로 설정합니다.
3. Input Action에 대한 매핑 설정
PlayerMapping
에서MoveAction
에 대해 키보드의W
,A
,S
,D
키를 앞뒤좌우 이동에 매핑합니다.- 게임패드의 경우, 조이스틱 축(axis)을
MoveAction
에 연결할 수 있습니다.
4. 캐릭터에 Enhanced Input 추가
이제 캐릭터 블루프린트 또는 코드에 Enhanced Input을 적용해 보겠습니다.
블루프린트:
- 캐릭터 블루프린트에서
Enhanced Input
컴포넌트를 추가합니다. - Begin Play 이벤트에서
PlayerMapping
을 캐릭터의 Enhanced Input Component에 적용합니다. InputAction
이벤트를 사용하여MoveAction
의 값을 받아 캐릭터의 이동 로직을 구현합니다.
코드 (C++):
// 헤더 파일 (MyCharacter.h) #include "EnhancedInputComponent.h" #include "EnhancedInputSubsystems.h" // 캐릭터 클래스 내에서 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)); // 캐릭터 이동 처리 }
이 코드는 MoveAction
의 입력을 받아 캐릭터를 움직이게 합니다. FInputActionValue
는 입력 벡터 값을 가져오며, 이를 캐릭터의 이동 함수에 적용합니다.
5. 게임 내 입력 테스트
모든 설정이 완료되면 게임을 실행하고 W
, A
, S
, D
키나 게임패드의 조이스틱으로 캐릭터가 움직이는지 테스트할 수 있습니다.
이러한 방식으로 UE5의 Enhanced Input 시스템을 사용하면 다양한 입력을 더 효율적으로 처리하고, 게임플레이에 맞는 복잡한 입력 설정을 쉽게 구현할 수 있습니다.