Enhanced Input Action(강화 입력 액션)란?

Enhanced Input Action(강화 입력 액션)은 Unreal Engine 5(언리얼 엔진 5)에서 도입된 새로운 입력 시스템의 핵심 요소입니다. 기존의 입력 시스템보다 더 유연하고, 컨텍스트(상황)에 따라 입력을 다르게 처리할 수 있도록 설계되었습니다.


Enhanced Input Action의 개념

  • 입력 액션(Input Action)은 “점프”, “공격”, “앉기” 등 플레이어의 의도를 데이터 에셋(자산)으로 표현하는 것입니다.
  • 기존의 입력 시스템(액션/축 매핑)과 달리, 특정 키나 디바이스에 직접 연결되지 않고, 추상화된 액션으로 입력을 처리합니다.
  • 입력 액션은 언제든지 다른 키나 디바이스로 쉽게 매핑을 변경할 수 있습니다.

주요 특징

  • 컨텍스트 기반 매핑:
    입력 액션은 **Input Mapping Context(입력 매핑 컨텍스트)**를 통해 실제 키보드, 마우스, 게임패드 등 물리적 입력과 연결됩니다.
    컨텍스트는 상황에 따라 동적으로 추가/제거/우선순위 변경이 가능하여, 예를 들어 걷기/달리기/메뉴상태 등에서 각각 다른 입력 동작을 손쉽게 구현할 수 있습니다.
  • 다양한 데이터 타입:
    입력 액션은 다음과 같은 다양한 타입을 지원합니다.
    • 불리언(참/거짓, 예: 점프)
    • 1D 축(예: 가속)
    • 2D 축(예: 이동 방향)
    • 3D 축(예: VR 컨트롤러 위치)
  • 트리거(Trigger)와 모디파이어(Modifier):
    • Modifier(모디파이어): 입력값을 전처리(예: 데드존, 감쇠, 반전 등)
    • Trigger(트리거): 입력 액션이 발동되는 조건 지정(예: 버튼을 오래 누르기, 여러 키 조합 등)
  • 블루프린트와 C++ 모두 지원:
    입력 액션은 블루프린트와 C++ 모두에서 바인딩(연결)하여 사용할 수 있습니다.

Enhanced Input Action 사용 흐름

  1. 입력 액션 에셋 생성:
    콘텐츠 브라우저에서 “Jump”, “Move”, “Fire” 등 입력 액션 에셋을 만듭니다.
  2. 입력 매핑 컨텍스트 생성:
    각 액션을 실제 키/버튼/축에 매핑하는 컨텍스트를 만듭니다.
    여러 컨텍스트를 상황에 따라 동적으로 추가/제거/우선순위 변경할 수 있습니다.
  3. 코드에서 액션 바인딩:
    캐릭터나 플레이어 컨트롤러에서 Enhanced Input Component를 사용해 입력 액션을 함수에 바인딩합니다.
  4. 입력 반응:
    매핑된 입력이 감지되고, 트리거 조건이 충족되면 해당 함수가 호출되어 게임 로직이 실행됩니다.

예시

  • CTRL 키를 상황에 따라 다르게 사용하고 싶을 때:
    • 걷기 상태: 앉기
    • 달리기 상태: 슬라이딩
    • 엎드린 상태: 일어서기
    컨텍스트만 바꿔주면 CTRL 키 하나로 각 상황에 맞는 동작을 쉽게 구현할 수 있습니다.

기존 입력 시스템과의 비교

기능기존 입력 시스템 (UE4)Enhanced Input (UE5)
매핑 유연성고정, 프로젝트 전체 적용동적, 컨텍스트별 적용 가능
런타임 리매핑어려움지원
입력 데이터 타입제한적(액션/축)불리언, 1D/2D/3D 축 지원
콤보/조합 입력직접 구현 필요트리거로 내장 지원
상황별 입력 처리상태 체크 필요컨텍스트로 손쉽게 처리
에셋 기반아님

Enhanced Input Action의 Output 상태: Triggered, Ongoing 등 설명

언리얼 엔진의 Enhanced Input 시스템에서 입력 액션(Input Action)은 다양한 **트리거 상태(Trigger State)**를 가집니다. 각 상태는 입력이 어떻게 처리되고 있는지, 그리고 언제 이벤트가 발생하는지 구분하는 기준이 됩니다.


주요 트리거 상태(Trigger State) 설명

상태설명
Started트리거 평가가 시작됨. 예: 더블탭 트리거의 첫 번째 키 입력 시 한 번 호출됨.
Ongoing트리거가 아직 처리 중임. 예: “길게 누르기”에서 지정 시간 전까지 키를 누르고 있는 동안.
Triggered모든 트리거 조건이 충족되어 액션이 발동됨. 예: “길게 누르기” 시간 도달, “눌렀다 뗌” 등.
Completed트리거 평가가 완료됨. 입력이 끝나고 액션이 종료됨.
Canceled트리거가 취소됨. 예: “길게 누르기” 조건을 채우기 전에 키를 뗀 경우 등.

각 상태의 동작 예시

  • Started
    • 입력이 처음 발생하여 트리거 평가가 시작될 때 한 번 호출됨.
    • 예: 더블탭 트리거에서 첫 번째 탭을 했을 때.
  • Ongoing
    • 트리거 조건이 아직 완전히 충족되지 않았지만, 입력이 계속 처리 중일 때.
    • 예: “길게 누르기” 트리거에서 사용자가 키를 누르고 있는 동안(지정 시간이 아직 안 됨).
    • 이 상태에서는 매 틱(tick)마다 Ongoing 이벤트가 발생할 수 있음24.
  • Triggered
    • 트리거의 모든 조건이 충족되어 액션이 실제로 발동되는 순간.
    • 예: “길게 누르기”에서 지정 시간 이상 키를 누르고 있으면 Triggered 상태가 됨.
    • “Press and Release” 트리거의 경우, 키를 뗄 때 Triggered가 발생24.
  • Completed
    • 입력 평가가 끝나고 액션이 종료될 때.
    • 예: 키를 뗀 후, 액션이 더 이상 활성화되지 않을 때.
  • Canceled
    • 트리거 조건이 충족되기 전에 입력이 중단되어 평가가 취소됨.
    • 예: “길게 누르기”에서 지정 시간 전에 키를 놓으면 Canceled 상태가 됨24.

실전 예시 (Hold 트리거 기준)

  • Z 키를 누르기 시작 → Started
  • Z 키를 누르고 있는 중(2초 미만) → Ongoing
  • Z 키를 2초 이상 누름 → Triggered
  • Z 키를 뗌 → Completed
  • Z 키를 2초 전에 뗌 → Canceled

요약

  • Started: 입력이 시작됨
  • Ongoing: 입력이 처리 중(조건 미충족)
  • Triggered: 조건 충족, 액션 발동
  • Completed: 입력 처리 종료
  • Canceled: 입력이 중단되어 취소됨

이 상태들은 블루프린트나 C++에서 각각의 이벤트에 바인딩하여 원하는 동작을 세밀하게 구현할 수 있습니다.

Enhanced Input Action(강화 입력 액션)은 언리얼 엔진에서 입력을 훨씬 더 유연하고, 상황에 맞게, 유지보수가 쉽도록 해주는 현대적인 입력 처리 방식입니다.
복잡한 입력 시스템이 필요한 게임이나 애플리케이션에서 특히 강력한 기능을 제공합니다.

Back to top