PART 4 · 강의 1/3

Enhanced Input BP

UE5의 Enhanced Input 시스템으로 유연하고 확장 가능한 입력 처리를 구현합니다

01

Enhanced Input 시스템 개요

UE5의 새로운 입력 시스템 구조와 핵심 에셋

Enhanced Input은 UE5의 기본 입력 시스템입니다. UE4의 축/액션 매핑을 대체하며, 런타임에 매핑 컨텍스트를 동적으로 추가/제거할 수 있어 상황별 입력 전환이 용이합니다.

Deprecated: UE4 입력 시스템

프로젝트 설정의 Input > Default Classes에서 기존 PlayerInputInputComponent 대신 EnhancedPlayerInputEnhancedInputComponent가 기본값입니다. UE4 스타일의 Axis/Action Mapping은 UE5.1에서 deprecated 되었습니다.

3대 핵심 에셋

Input Action (IA)

플레이어가 할 수 있는 행동 하나를 정의합니다. "이동", "점프", "공격" 등. Value Type으로 입력 값의 형태를 지정합니다.

Input Mapping Context (IMC)

Input Action과 실제 입력 키를 연결합니다. 상황별로 다른 IMC를 적용할 수 있습니다 (이동 중, 탈것, 메뉴).

Modifier & Trigger

Modifier: 입력값을 변환 (Negate, Swizzle, DeadZone). Trigger: 발동 조건 (Pressed, Released, Hold, Tap).

물리 키
W, Space, Mouse
IMC
키 → IA 매핑
Modifier
값 변환
Trigger
발동 조건
BP Event
로직 실행
02

Input Action 설정

Input Action의 Value Type과 Trigger 설정

Input Action Value Type

Value Type차원용도예시
Digital (Bool)0/1버튼 입력점프, 상호작용, 공격
Axis1D (Float)1D단일 축 값스로틀, 줌
Axis2D (Vector2D)2D평면 방향WASD 이동, 마우스 시선
Axis3D (Vector)3D3D 방향VR 컨트롤러, 자이로
Input Action 생성 // 콘텐츠 브라우저 > 우클릭 > Input > Input Action IA_Move └─ Value Type: Axis2D // WASD → 2D 벡터 IA_Look └─ Value Type: Axis2D // 마우스 → 2D 벡터 IA_Jump └─ Value Type: Digital // Space → True/False IA_Interact └─ Value Type: Digital // E키 → True/False IA_Sprint └─ Value Type: Digital // Shift → True/False

주요 Trigger 종류

Trigger설명Triggered 발생 시점
Down키를 누르고 있는 동안 (기본값)매 프레임
Pressed키를 누른 순간1회
Released키를 뗀 순간1회
Hold일정 시간 누르고 있을 때Hold 시간 경과 후
Hold and Release일정 시간 눌렀다 뗄 때뗀 순간
Tap빠르게 눌렀다 뗄 때뗀 순간
03

Input Mapping Context 설정

키 매핑, Modifier, Context 전환

IMC 구성

IMC_Default Configuration IMC_Default (Input Mapping Context) │ ├─ IA_Move (Axis2D) │ ├─ W Key: Modifiers = [Swizzle(YXZ)] // (0,1) → 전진 │ ├─ S Key: Modifiers = [Negate, Swizzle(YXZ)] // (0,-1) → 후진 │ ├─ A Key: Modifiers = [Negate] // (-1,0) → 좌 │ ├─ D Key: (없음) // (1,0) → 우 │ └─ Gamepad Left Stick: Modifiers = [DeadZone(0.2)] │ ├─ IA_Look (Axis2D) │ ├─ Mouse XY: Modifiers = [Negate(Y축만)] │ └─ Gamepad Right Stick: Modifiers = [DeadZone(0.2), Scalar(50)] │ ├─ IA_Jump (Digital) │ ├─ Space Bar: Trigger = Pressed │ └─ Gamepad Face Button Bottom: Trigger = Pressed │ └─ IA_Interact (Digital) └─ E Key: Trigger = Pressed

주요 Modifier 종류

Modifier설명사용 예시
Negate값 반전 (-1 곱하기)S키를 후진으로, A키를 좌로
Swizzle축 순서 변경 (XYZ 재배치)W키(X축)를 Y축 이동으로 변환
Dead Zone소규모 입력 무시게임패드 스틱 미세 움직임 무시
Scalar값에 배수 곱하기마우스 감도 조절
Smooth값 변화를 부드럽게 보간카메라 이동 스무싱
Response Curve입력-출력 커브 매핑비선형 가속

런타임 Context 전환

Context Switching // BeginPlay에서 기본 IMC 등록 [Event BeginPlay] └──> [Get Enhanced Input Local Player Subsystem] └──> [Add Mapping Context] ├─ Mapping Context: IMC_Default └─ Priority: 0 // 탈것 탑승 시 Context 전환 [On Enter Vehicle] ├──> [Remove Mapping Context] (IMC_Default) └──> [Add Mapping Context] (IMC_Vehicle, Priority: 0) // 탈것 하차 시 원복 [On Exit Vehicle] ├──> [Remove Mapping Context] (IMC_Vehicle) └──> [Add Mapping Context] (IMC_Default, Priority: 0)
Priority (우선순위)

여러 IMC가 동시에 활성화되면 높은 Priority 값이 우선합니다. 같은 키에 대해 높은 우선순위의 IMC가 먼저 처리되고, 해당 IMC가 입력을 소비(consume)하면 낮은 우선순위는 무시됩니다.

04

블루프린트에서 입력 처리

EnhancedInputAction 이벤트 바인딩과 값 활용

이벤트 바인딩

Input Event in Blueprint // 이벤트 그래프에서 우클릭 > "IA_Move" 검색 // → EnhancedInputAction IA_Move 이벤트 노드 생성 [EnhancedInputAction IA_Move] ├─ Execution Pins: │ ├─ Triggered // 트리거 조건 만족 시 (주로 사용) │ ├─ Started // 입력 시작 │ ├─ Ongoing // 입력 진행 중 │ ├─ Canceled // 입력 취소/중단 │ └─ Completed // 입력 완료 │ └─ Data Pins: ├─ Action Value // InputActionValue (구조체) ├─ Elapsed Seconds // 입력 경과 시간 └─ Triggered Seconds // 트리거된 시간

이동 구현 예제

Character Movement with Enhanced Input // IA_Move Triggered 이벤트에서 캐릭터 이동 [EnhancedInputAction IA_Move - Triggered] │ ├─ Action Value ──> [Get Action Value (Vector2D)] │ ├─ X: Right/Left │ └─ Y: Forward/Back │ ├──> [Get Control Rotation] ──> [Break Rotator] ──Yaw──> │ │ │ [Make Rotator (0, Yaw, 0)] ──> [Get Forward Vector] ──ForwardDir──> │ [Make Rotator (0, Yaw, 0)] ──> [Get Right Vector] ──RightDir──> │ └──> [Add Movement Input] ├─ World Direction: ForwardDir * Y + RightDir * X └─ Scale Value: 1.0
Triggered vs Completed 사용 구분

Triggered: 이동, 시점 회전 등 지속적인 입력에 사용 (매 프레임 발생)
Started: 점프, 상호작용 등 1회성 액션에 사용
Completed: 키를 뗀 시점 처리 (달리기 종료, 충전 공격 발사)

SUMMARY

핵심 요약

  • Enhanced Input은 Input Action(행동 정의) + Input Mapping Context(키 바인딩) + Modifier/Trigger(변환/조건) 3요소로 구성된다
  • Value Type은 Digital(버튼), Axis1D, Axis2D(이동), Axis3D 4가지이다
  • NegateSwizzle Modifier로 WASD 4키를 하나의 Axis2D Input Action으로 통합한다
  • Add/Remove Mapping Context로 런타임에 입력 매핑을 동적으로 전환한다 (도보/탈것/메뉴)
  • 이벤트의 Triggered 핀은 지속 입력, Started 핀은 1회성 액션에 적합하다
  • UE4의 Axis/Action Mapping은 UE5.1에서 deprecated 되었으므로 Enhanced Input을 사용한다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Enhanced Input 기본 설정

Input Action(IA_Move, IA_Look, IA_Jump)과 Input Mapping Context를 생성하세요. WASD를 IA_Move(Value Type: Axis2D)에 매핑하고, Swizzle Input Axis Values Modifier를 적용하여 캐릭터를 이동시키세요.

실습 2: Input Trigger와 Modifier 활용

IA_Sprint에 Hold Trigger(Hold Time: 0.3초)를 적용하여 길게 누르면 달리기가 활성화되게 하세요. IA_Crouch에 Tap Trigger를 적용하여 토글 웅크리기를 구현하고, Dead Zone Modifier를 게임패드 스틱에 적용해보세요.

심화 과제

상황별 Input Mapping Context 전환 시스템을 구현하세요. 도보(Default), 차량 탑승(Vehicle), UI 열림(Menu) 3개의 IMC를 만들고, Add/Remove Mapping Context로 동적 전환하세요. Priority를 활용하여 IMC 우선순위도 설정하세요.