Unreal TIL 3일차 - Blueprint Enhanced Input

yys·2026년 2월 26일

TIL

목록 보기
3/86

Enhanced Input


UE 5.1에서 기본으로 지원하는 언리얼 입력 방식으로, 복잡한 입력 로직을 코드 수정 없이 유연하게 관리할 수 있게 만든 시스템이다.

Enhanced Input은 주로 4가지 키워드로 분류 된다.

  • Input Action(IA)
    - 해당 액션이 발생했을 때, 어떠한 값을 반환할 것인지 지정하는 데이터 에셋
  • Input Mapping Context(IMC)
    - IA를 발생시키기 위한 키 바인딩 세트
  • Modifier
    - Action에 의해 반환된 값을 어떻게 처리할 지에 대한 수정자
    • 예) 값을 음수로 바꾸고 싶을 때
  • Trigger
    - 입력에 조건을 부여
    • 예) 우클릭을 꾹 누른 상태(조준)에서만 총알 발사

Move 및 Look 세팅


먼저, Move 액션을 만들기 위해 Input Action을 구현한다.

Move와 Look 모두 상/하/좌/우로 이동하니, 2차원 값인 Vector2D로 설정한다.

각 액션에 대해 키 바인딩을 해주기 위해 Input Mapping Context를 생성한다.

Move의 경우, 다음과 같이 세팅했다.

  • 언리얼의 경우 Forward를 X축, Right를 Y축으로 본다.
  • Negate Modifiers: 입력 값을 반전한다. 예) 0 -> 0, 1 -> -1
    • 키보드는 키를 안누르거나(0) 누르거나(1) 밖에 없으므로, 2개의 결과만 반환된다.
  • Swizzle Input Axis Values: 입력받는 축의 순서를 전환한다. (기본 XYZ)
    • 이때, YZX로 설정하여 입력 값이 Y로 먼저 가도록 세팅했다.
  • 아래 세팅은 W가 Foward라는 가정 하에 작성되었다. (꼭 이게 정답은 아니라는 뜻)

Look의 경우, 다음과 같이 세팅했다.

  • Negate Modifier를 추가했지만 Y축으로만 값을 반전해서 위/아래의 카메라 회전을 자연스럽게 바꾼다.

Action 적용


이미 카메라를 보유한 캐릭터가 있다는 가정하에, 캐릭터의 블루프린트에 Input 초기 설정을 한다.

  • Get Player Controller(): 인덱스에 해당하는 플레이어를 Possess한 Player Controller를 가져온다.
    • 비유를 하자면, Player는 조종당할 캐릭터. Player Controller는 이를 조종하는 기기/사람을 의미
    • 싱글 플레이 환경에서는 0을 주로 사용하지만, 멀티 환경에서는 GetController()와 같은 함수를 응용해야 함.
  • Enhanced Input Local Player Subsystem: Input을 적용하기 위한 관리자. 이를 통해서 Add Mapping Context()를 통해 Input Mapping Context를 등록해야 해당 컨텍스트가 활성화 된다.

앞서 IMC에 Move, Look에 대한 액션을 넣었으므로, 해당 액션에 대한 로직을 추가한다.

  • 아래는 작동 방식에 대한 예시
    1. 플레이어가 W키를 누른다. -> X값이 1로 변경된다.
    2. 컨트롤러의 회전 값을 얻고 회전 값을 X축(Foward) 벡터로 변환한다.
    3. 벡터 방향으로 Scale(X값 = 1)만큼 이동한다.

아래는 내가 종종 까먹다보니, 이해한 것을 바탕으로 대략적인 그림을 그려보았다.

Look도 입력 값을 기반으로 컨트롤러를 회전시키도록 구현한다.

그 외에도 의도한대로 동작하려면, Input 이벤트 로직 구현 이외에도 아래 옵션을 켜줘야 한다.

  • Orient Rotation to Movement: 컨트롤러의 회전을 기반으로 캐릭터를 가속시킴(Character Movement)
  • Use Pawn Control Rotation: 컨트롤러의 회전에 따라 SpringArm이 회전(SpringArm)
profile
게임 개발 지망생

0개의 댓글