WWolves Den

언리얼 기초 · 약 3분

Enhanced Input의 액션과 매핑을 구분하기

Input Action은 동작의 의미를, Mapping Context는 입력 장치와 상황별 연결을 담당합니다.

Wolfgadeok · 업데이트

키 이름과 게임 행동은 다르다

'Space 키가 눌렸다'와 '점프를 요청했다'는 같은 정보가 아니다. 같은 점프 행동을 키보드, 게임패드, 터치 버튼으로 요청할 수 있고, 같은 버튼도 메뉴에서는 확인으로 쓰일 수 있다. Enhanced Input을 살펴볼 때는 물리 입력과 게임의 의도를 분리해서 읽는 것이 출발점이다.

Input Action은 이동, 시점, 점프 같은 의미와 값의 형태를 표현한다. Input Mapping Context는 어떤 입력을 어떤 액션으로 해석할지 묶어 놓는다. 액션의 의미를 정하는 일과 장치 입력을 연결하는 일을 구분해 살펴본다. IA_, IMC_ 같은 접두사는 편의를 위한 이름 규칙이며 이름만 바꾼다고 에셋 종류가 바뀌지는 않는다.

입력이 처리되는 길을 따라간다

콘텐츠 폴더에 액션과 매핑 에셋이 존재하는 것만으로 입력이 자동 동작하는 것은 아니다. 현재 로컬 플레이어에 필요한 컨텍스트가 적용되어야 하고, 액션 이벤트를 받아 실제 게임 기능을 호출하는 연결도 필요하다. '키가 안 먹는다'는 문제는 이 중 어디가 끊겼는지 나누어 봐야 한다.

Triggers는 언제 행동을 성립시킬지, Modifiers는 들어온 값을 어떻게 가공할지 정하는 데 사용한다. 예를 들어 길게 누르기와 축 방향 변환은 단순 키 목록보다 더 많은 의미를 가진다. 처음부터 복잡하게 구성하기보다 하나의 버튼 액션이 의도대로 발생하는지부터 확인한다.

기존 템플릿을 읽는 순서

Third Person 템플릿의 입력 폴더 이름은 엔진 버전이나 프로젝트 구성에 따라 다를 수 있다. 폴더 이름이 달라도 캐릭터 또는 Controller에서 사용하는 액션 참조를 따라갈 수 있으므로, 에셋 경로를 외우기보다 연결을 찾는 연습을 한다.

  1. 이동 또는 점프 Input Action을 열어 값의 형식과 이름이 실제 역할에 맞는지 확인한다.
  2. 해당 액션을 연결한 Mapping Context를 열고 키·버튼 및 축 가공 설정을 확인한다.
  3. 현재 플레이어에게 그 컨텍스트를 추가하는 초기화 지점을 찾는다. 우선순위가 다른 컨텍스트와 충돌하지 않는지도 확인한다.
  4. 액션 이벤트에 임시 관찰 로그나 중단점을 두고 입력이 도착하는지 확인한다.
  5. 이벤트는 오는데 행동이 없다면 Pawn의 빙의 상태와 실제 이동·점프 함수를 확인한다. 로그는 점검 후 제거한다.

동작 상태와 입력 상태를 섞지 않는다

입력은 사용자의 의도이고 Velocity는 실제 이동 결과다. 벽을 향해 이동 버튼을 누르면 입력은 있어도 속도는 거의 없을 수 있다. 반대로 밀려나는 캐릭터는 입력 없이 움직인다. 애니메이션을 설계할 때 어느 정보를 사용할지 의도적으로 선택해야 한다. 입력 설정을 바꿨다고 캐릭터의 물리 상태까지 같은 의미로 바뀌는 것은 아니다.

참고 자료