과거 언리얼 엔진 5 이전 버전에서는 프로젝트 세팅 Bindings에서 Action Mappings, Axis Mappings를 설정하여
PlayerInputComponent->BindAxis(FName("MoveForward"), this, &APJECharacterPlayer::MoveForward);
PlayerInputComponent->BindAxis("MoveRight", this, &APJECharacterPlayer::MoveRight);
위와 같이 플레이어 입력을 받았었는데 UE5부터는 향상된 입력(Enhanced Input)을 사용합니다.
관련 공식 문서는 다음과 같습니다.
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/enhanced-input-in-unreal-engine
- Input Action : 액션이 할당되는 부분
특정 키가 연결되지 않고, 역할에 대한 정보만을 구성
입력받는 정보는 bool, float, Vector 2D, Vector 3D 를 받을 수 있게 되며, 내가 어떤 입력값을 받을지에 따라 이를 정할 수 있다
ex) '문을 연다', '장비를 착용한다' 와 같은 동작은 bool 값으로, 이동같은 동작은 Vector 2D로 설정
- Input Mapping Context : 사용자의 입력값을 만들어둔 인풋 액션과 바인딩
사용자는 여러개의 Input Mapping Context를 가질 수 있으며, 이들은 각각 우선순위가 있어 같은 키를 입력해도 어떤 액션이 나갈지를 지정할 수 있게 된다
- Modifier : 입력 받은 값을 변환해주는 장치
ex) W를 보면 Modifier에서 Swizzle Input Axis Values 가 설정되어 있고, 순서를 YXZ로 두었다
이는 원래는 입력을 받으면 XYZ 의 순서로 받게 되는데(이 경우 Modifier 가 없다면 w를 누르면 X가 1이 된다) 이를 YXZ 의 순서로 받게 하여 W를 입력 시 Y가 1이 되도록 설정하는 것이다
- Trigger : Modifier를 통해 입력 받은 값을 어떻게 활용할지 정하게 된다
ex) 총을 쏘기 전에 먼저 에임을 해야한다거나, 짧게 누르면 약공격, 길게 누르면 차지어택이 나간다면, 이를 모두 트리거에서 제어가 가능하다
Move에 대한 Input Mapping Context (IMC)은 아래와 같이 맵핑하면 됩니다.
이동에 대해 W,S,A,D를 왜 위와 같이 했는지 헷갈려 아래 그림을 그려 이해했습니다.
'내일배움캠프 > TIL' 카테고리의 다른 글
[내일배움캠프 Day29] 정렬 (1) | 2025.01.27 |
---|---|
[내일배움캠프 Day28] 7주차 과제 진행 (1) | 2025.01.24 |
[내일배움캠프 Day26] C++ 6주차 과제 진행 (1) | 2025.01.22 |
[내일배움캠프 Day25] 액터의 라이프 사이클 (2) | 2025.01.21 |
[내일배움캠프 Day24] 개발 환경 설정 (1) | 2025.01.20 |