[UE5 C++] 언리얼 향상된 입력(Enhanced Input)

반응형

이 시스템의 핵심 철학은 '무엇을(Action)'과 '어떻게/언제(Mapping)'를 분리하는 것이다.

  1. Input Action - IA
    플레이어가 할 수 있는 '행동' 그 자체를 정의하는 에셋이다.
    '점프', '사격', '이동' 같은 추상적인 행동을 먼저 만드는 것이다.
    이 액션이 단순 버튼 누르기인지, 마우스 이동 같은 2D 벡터 값인지 등의 데이터 타입도 여기서 미리 정해둔다.

  2. Input Mapping Context - IMC
    '상황별 입력 규칙'을 모아놓은 하나의 세트
    라고 보면 된다. 예를 들어, '평상시'라는 컨텍스트를 만들어서 W, A, S, D를 '이동' 액션에 연결하고, '차량 운전' 컨텍스트에서는 똑같은 W 키를 '전진' 액션에 연결할 수 있다.
    캐릭터의 상태에 따라 이 컨텍스트를 통째로 활성화하거나 비활성화하면 되니, 상태 관리가 편해진다.

여기다 디테일을 더해주는 두 가지 도구가 있다.

  1. Input Modifier
    이름 그대로 입력 값을 '수정'하는 친구다. 플레이어가 입력한 Raw input을 우리가 원하는 형태로 가공해준다.
    게임패드 스틱의 데드존(Deadzone)을 설정하거나, 특정 축의 값을 뒤집거나(Y축 반전),
    값을 제곱해서 가속도를 붙이는 등의 처리를 할 수 있다. 그렇게 가공한 값을 Input Trigger로 넘긴다.

  2. Input Trigger
    이건 액션이 '언제' 실행될지 조건을 거는 기능이다.
    그냥 버튼을 눌렀을 때, 0.5초 이상 길게 꾹 눌렀을 때, 짧게 두 번 연속으로 눌렀을 때(더블 탭) 등 다양한 조건을 걸 수 있다.
    짧게 누르면 약공격, 길게 누르면 강공격 같은 로직을 구현할 수 있다.


결론은?

이 구조에 한번 익숙해지면 되려 코드나 블루프린트가 깔끔해진다.
특히 캐릭터가 여러 상태(예: 걷기, 달리기, 수영, 운전)를 가지거나,
PC와 콘솔 등 여러 플랫폼을 동시에 지원해야 하는 프로젝트라면 말이다.

 


참고자료

https://www.youtube.com/watch?v=bIo97TLsXkY&ab_channel=DruidMechanics

 

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/enhanced-input-in-unreal-engine?application_version=5.4