- 개요
ASC에 부여된 Gameplay Ability는 특정한 키를 입력하여 발동한다
따라서 입력하는 키와 Gameplay Tag를 연결하여 특정한 키를 설정할 수 있다
이때 언리얼 엔진에서 제공하는 Lyra 프로젝트의 동작방식을 일부 가져와 사용한다
구성은 다음과 같다
- InputConfig : 사용자 정의 InputAction을 관리하는 Data Asset 클래스
- 2가지 타입의 IA를 관리 : 일반적인 입력에 의해 발동하는 IA와 특별한 입력에 의해 발동하는 IA
- 특별한 입력에 의해 발동하는 IA는 GameplayTag를 통해 해당 IA를 가져옴
- 현재 프로젝트에서는 특별한 입력에 의해 발동하는 IA만 관리
- InputComponent : 키 입력에 따라 IA가 발동되면 호출하는 콜백함수를 설정하는 컴포넌트
- 기존에 생성한 Component에 로직을 추가하여 확장함
1) 입력과 연결할 Gameplay Tag를 설정 - AuraGameplayTags 클래스


위와 같이 입력과 연결할 Gameplay Tag들을 멤버변수로 추가하고,
InitializeNativeGameplayTags 함수에 추가한 Tag들을 실제로 생성하는 로직을 추가한다
2) Lyra의 입력 방식 도입
2 - 1) AuraInputConfig 클래스

InputAction과 연결될 GameplayTag를 함께 래핑한 AuraInputAction 구조체를 추가한다
AuraInputConfig에서는 해당 구조체를 사용하여 어빌리티를 발동할 IA를 관리한다

AuraInputConfig 클래스는 위와 같이 구성하였다
DataAsset을 상속받아 만들었으며, AbilityInputActions 멤버변수를 통해 AuraInputConfig를 저장한다
FindAbilityInputActionForTag 함수를 통해 인자로 받는 Tag와 연결된 IA를 반환한다

FindAbilityInputActionForTag 함수의 로직은 위와 같다
AbilityInputActions 멤버 변수를 순회하면서 인자로 받은 Tag와 동일한 Tag를 가졌다면 연결된 IA를 반환한다
그렇지 않은 경우 nullptr를 반환한다
2 - 2) AuraInputComponent 클래스

BindAbilityActions 템플릿 함수를 추가한다
해당 템플릿 함수는 총 3개의 입력 방식으로 동작하는 콜백 함수를 받아 연결한다
- PressedFuncType : 키를 누른 시점에서 호출, Started 이벤트와 연결
- ReleasedFuncType : 키를 누르고 있다 뗀 시점에서 호출, Completed 이벤트와 연결
- HeldFuncType : 키를 누르고 있는 시점에서 호출, Triggered 이벤트와 연결

로직은 위와 같다
인자로 받은 AuraInputConfig의 AbilityInputActions 프로퍼티를 순회한다
순회하면서 연결된 IA가 존재하고, 연결된 Tag가 유효하다면
연결된 IA에 3개의 입력 방식으로 동작하는 콜백함수들을 바인드한다
3) AuraPlayerController 클래스

IA와 연결된 Tag를 관리하는 AuraInputConfig를 멤버변수로 추가한다
또 어빌리티와 관련한 입력을 수행한 후 호출할 콜백함수들을 위와 같이 추가하였다

SetupInputComponent 함수에 어빌리티와 관련한 입력에 따라수행할 콜백함수를 연결하는 로직을 추가한다

추가한 3개의 콜백함수들은 IA와 연결된 Tag를 화면에 출력하도록 구성하였다
4) 언리얼 에디터

위와 같이 Input Action과 Gameplay Tag를 짝지어 AuraInpuConfig로부터 생성한 Data Asset을 설정한다

Input Mapping Context에서 새롭게 추가한 IA들을 발동하기 위한 키를 연결한다

PlayerController의 블루 프린트에 AuraInputConfig를 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| GameplayAbility - 최종) 어빌리티를 통한 투사체 생성 (0) | 2025.08.11 |
|---|---|
| GameplayAbility - 4) 길찾기 시스템 구현 (0) | 2025.08.11 |
| GameplayAbility - 2) Gameplay Ability 적용 (0) | 2025.08.08 |
| GameplayAbility - 1) Gameplay Ability에 대하여 (0) | 2025.08.08 |
| 스탯창 UI - 최종) 스탯창 UI와 AttributeSet의 연동 (0) | 2025.08.03 |