Native Gameplay Tag Setup

Tag는 Native하게 정의되어 있으므로 Input Binding을 위해 참조할 수 있다. 또한 Editor에서 입력 구성을 위해 Data Asset에서도 사용할 수 있다.

싱글톤 구조체 FMyGameplayTags를 정의하고 초기화 시 NativeTag를 등록하는 로직을 구현한다.

 

MyGameplayTags.h

MyGameplayTags.cpp

 

Asset Manager

Native 게임플레이 Tag를 초기화하기 좋은 장소이다. 

StartInitialLoading 함수를 오버라이딩하고 여기서 태그를 초기화한다.

프로젝트 세팅에서 Asset Manager를 MyAssetManager로 설정하자.

 

MyAssetManager.h

MyAssetManager.cpp

 

Input Configuration

에디터의 input Action와 input tag를 연관지을 방법으로 Data asset을 사용한다. 

UInputAction과 FGameplayTag 페어를 가지는 단순한 구조체 (FTaggedInputAction) 를 사용하고, 구조체를 블루프린트에 이 타입을 노출시킨다.

Data Asset은 FtaggedInputAction의 배열을 가질 것이고 태그를 사용하여 InputAction을 찾는 헬퍼 함수도 갖게 된다.

 

InputConfig.h

InputConfig.cpp

 

Enhanced Input Component

커스텀 Enhanced Input Component : UEnhancedInputComponent::BindAction Wrapper 함수 (BindActionByTag) 소유

MyEnhancedInputComponent.h

 

Character Setup

헤더파일 : 캐릭터에 InputConfig 애셋 가리키는 포인터 추가, 동작 함수 추가.

 

구현파일 : SetupPlayerInputComponent 함수를 오버라이딩하여 캐릭터의 동작 함수와 InputAction을 연관된 게임플레이 태그를 사용하여 bind 한다.

 

Input Settings

기본 Player Input Class를 EnhancedPlayerInput으로 지정

기본 Input Component Class를 MyEnhancedInputComponent로 지정

 

Input Assets and Configuration

Input Action은 추상적인 게임 액션을 나타낸다. 

Input Action들은 bool, float vector와 같은 데이터 타입을 반환하는데, 이것들은 값을 수정하거나 트리거 규칙을 구성한다.

 

트리거 규칙은 언제 어떻게 조건을 통해 액션을 발동시킬 것인지 결정한다.

Pressed 트리거는 한번의 입력 동안 이벤트를 한 번 발생시키고 Pulse 트리거는 키 입력 동안 일정 간격으로 이벤트를 발생시킨다.

Modifier는 Input Action의 최종 출력을 조정하는 데 적용될 수 있다. 예를 들면 Dead Zone Modifier는 입력 변수를 상한선과 하한선 사이로 잘라준다.

 

Input Mapping Context

하드웨어 Input - Input Action을 매핑

플레이어가 탈것을 타는 경우에 새로운 InputMapping Context가 적용될 것이다. 

 

키보드와 마우스의 경우 바이너리 Key이므로 0-1 값을 기록한다.

Move의 경우 W와 S키에 Swizzle modifier를 적용해 1D input을 2D 액션의 Y 축에 매핑해야 한다.

A와 S에는 Negate modifier를 적용해 음수 값을 가지도록 한다.

 

 

Character Blueprint

1. 캐릭터 블루프린트에서 InputConfig 프로퍼티에 IC_BaseCharacter 데이터 애셋을 세팅

2. OnBeginPlay 이벤트에서 EnhancedInputLocalSubsystem 노드를  사용하여 Input Mapping Context 애셋을 등록한다.

3. 캐릭터를 GameMode에서 기본 Pawn으로 지정한다.

 

'언리얼 5 > 에픽 게임즈 공식 강의' 카테고리의 다른 글

Gameplay  (0) 2023.02.21
Programming 2  (0) 2023.02.21
Geometry Script  (0) 2023.02.20
Engine Structure  (0) 2023.02.20
All about Soft and Weak pointer  (0) 2023.02.20

+ Recent posts