오늘은 언리얼의 Enhanced Input System에 대해서 알아봤습니다.

 

 

Enhanced Input System 주요 기능

 

1. Input Mapping Context (IMC)

  • 입력 구성을 그룹화하는 역할을 한다.
  • 게임의 특정 상태(ex: 차량, 보행 등)에 따라 다른 입력 구성을 활성화할 수 있다.

2. Inptu Action (IA)

  • 특정한 입력 이벤트(ex: 이동, 점프 등)를 정의하는 객체.
  • 키보드, 마우스 등의 입력을 추상화하여 다양한 입력 기기에서 사용할 수 있도록 한다.

3. Input Modifier

  • 입력 값을 변형하는 기능
  • ex: Scale, Deadzone, Negate 등이 있다.

4. Input Trigger

  • 입력이 활성화되는 조건을 설정하는 기능
  • ex: Pressed(버튼이 눌릴 때), Released(버튼이 떼어질 때) 등

5. Player Input Component

  • Enhacned Input을 사용하려면 UInputComponent 대신 UEnhancedInputComponent를 사용해야한다.
  • BindAction()을 통해 Input Action을 바인딩한다.

 

사용 방법

 

1. Input Mapping Context (IMC) 생성

2. Input Action (IA) 생성

3. IMC에 IA 추가

4. C++에서 입력 바인딩

 

#include "EnhancedInputComponent.h"
#include "EnhancedInputSubsystems.h"

class AMyCharacter : public ACharacter
{
protected:
    virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;

private:
    void Move(const FInputActionValue& Value);
};
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    UEnhancedInputComponent* EnhancedInputComponent = 
    	Cast<UEnhancedInputComponent>(PlayerInputComponent);
        // EnhancedInputComponent로 캐스팅
        
    if (EnhancedInputComponent)
    {
        EnhancedInputComponent->BindAction(
        IA_Move, 
        ETriggerEvent::Triggered,
        this,
        &AMyCharacter::Move
        );
        // 바인딩
    }
}

void AMyCharacter::Move(const FInputActionValue& Value)
{
    FVector2D MovementVector = Value.Get<FVector2D>();
    AddMovementInput(GetActorForwardVector(), MovementVector.Y);
    AddMovementInput(GetActorRightVector(), MovementVector.X);
}

+ Recent posts