Enhanced Input Action(강화 입력 액션)은 Unreal Engine 5(언리얼 엔진 5)에서 도입된 새로운 입력 시스템의 핵심 요소입니다. 기존의 입력 시스템보다 더 유연하고, 컨텍스트(상황)에 따라 입력을 다르게 처리할 수 있도록 설계되었습니다.
목차
ToggleEnhanced Input Action의 개념
- 입력 액션(Input Action)은 “점프”, “공격”, “앉기” 등 플레이어의 의도를 데이터 에셋(자산)으로 표현하는 것입니다.
- 기존의 입력 시스템(액션/축 매핑)과 달리, 특정 키나 디바이스에 직접 연결되지 않고, 추상화된 액션으로 입력을 처리합니다.
- 입력 액션은 언제든지 다른 키나 디바이스로 쉽게 매핑을 변경할 수 있습니다.
주요 특징
- 컨텍스트 기반 매핑:
입력 액션은 **Input Mapping Context(입력 매핑 컨텍스트)**를 통해 실제 키보드, 마우스, 게임패드 등 물리적 입력과 연결됩니다.
컨텍스트는 상황에 따라 동적으로 추가/제거/우선순위 변경이 가능하여, 예를 들어 걷기/달리기/메뉴상태 등에서 각각 다른 입력 동작을 손쉽게 구현할 수 있습니다. - 다양한 데이터 타입:
입력 액션은 다음과 같은 다양한 타입을 지원합니다.- 불리언(참/거짓, 예: 점프)
- 1D 축(예: 가속)
- 2D 축(예: 이동 방향)
- 3D 축(예: VR 컨트롤러 위치)
- 트리거(Trigger)와 모디파이어(Modifier):
- Modifier(모디파이어): 입력값을 전처리(예: 데드존, 감쇠, 반전 등)
- Trigger(트리거): 입력 액션이 발동되는 조건 지정(예: 버튼을 오래 누르기, 여러 키 조합 등)
- 블루프린트와 C++ 모두 지원:
입력 액션은 블루프린트와 C++ 모두에서 바인딩(연결)하여 사용할 수 있습니다.
Enhanced Input Action 사용 흐름
- 입력 액션 에셋 생성:
콘텐츠 브라우저에서 “Jump”, “Move”, “Fire” 등 입력 액션 에셋을 만듭니다. - 입력 매핑 컨텍스트 생성:
각 액션을 실제 키/버튼/축에 매핑하는 컨텍스트를 만듭니다.
여러 컨텍스트를 상황에 따라 동적으로 추가/제거/우선순위 변경할 수 있습니다. - 코드에서 액션 바인딩:
캐릭터나 플레이어 컨트롤러에서 Enhanced Input Component를 사용해 입력 액션을 함수에 바인딩합니다. - 입력 반응:
매핑된 입력이 감지되고, 트리거 조건이 충족되면 해당 함수가 호출되어 게임 로직이 실행됩니다.
예시
- 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(강화 입력 액션)은 언리얼 엔진에서 입력을 훨씬 더 유연하고, 상황에 맞게, 유지보수가 쉽도록 해주는 현대적인 입력 처리 방식입니다.
복잡한 입력 시스템이 필요한 게임이나 애플리케이션에서 특히 강력한 기능을 제공합니다.