Unreal Enhanced Input

Unreal Engine 5 (UE5) – Enhanced Input 시스템

Unreal Engine 5의 Enhanced Input 시스템은 이전 버전의 입력 시스템을 대체하는 더 강력하고 유연한 입력 처리 방식입니다. 이 시스템은 사용자가 키보드, 마우스, 게임패드 등 다양한 입력 장치에서 동작을 쉽게 매핑할 수 있도록 하며, 입력 컨텍스트, 복잡한 입력 조합 및 사용자 재설정 가능한 입력을 보다 효과적으로 지원합니다.

Enhanced Input 시스템의 주요 기능:

  1. 입력 액션 (Input Actions):
  • 입력 액션은 버튼을 누르거나, 조이스틱을 움직이거나, 마우스를 드래그하는 것과 같은 사용자 동작을 정의하는 이벤트입니다. 액션은 단순한 버튼 클릭부터 복잡한 조합 입력까지 다양한 입력을 처리할 수 있습니다.
  1. 입력 매핑 (Input Mapping Context):
  • 입력 매핑은 특정 상황에 맞는 입력 설정을 정의하는 역할을 합니다. 이를 통해 플레이어가 게임 내 특정 상태에 있을 때만 특정 입력을 사용할 수 있도록 제한할 수 있습니다. 예를 들어, 캐릭터가 차를 타고 있을 때만 “운전”과 관련된 입력이 활성화되도록 설정할 수 있습니다.
  1. 다양한 장치 지원:
  • Enhanced Input 시스템은 키보드, 마우스, 게임패드 등의 다양한 입력 장치를 지원하며, 각 장치에 맞는 입력 설정을 개별적으로 정의할 수 있습니다. 특히, 여러 장치를 동시에 사용하는 복합 입력 시스템을 쉽게 설정할 수 있습니다.
  1. 입력 조합 (Chording):
  • 여러 입력을 동시에 눌러야 하는 복합 입력을 처리하는 기능입니다. 예를 들어, “Shift + W”로 대시(dash) 기능을 수행하거나, “Ctrl + Click”으로 특별한 액션을 실행하는 경우입니다.
  1. 재설정 가능한 입력 (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 시스템을 사용하면 다양한 입력을 더 효율적으로 처리하고, 게임플레이에 맞는 복잡한 입력 설정을 쉽게 구현할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *