언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

GameplayAbility - 3) Lyra의 입력 시스템 도입

monstro 2025. 8. 9. 01:15
728x90
반응형

- 개요

ASC에 부여된 Gameplay Ability특정한 키를 입력하여 발동한다

따라서 입력하는 키Gameplay Tag를 연결하여 특정한 키를 설정할 수 있다

이때 언리얼 엔진에서 제공하는 Lyra 프로젝트의 동작방식을 일부 가져와 사용한다

구성은 다음과 같다

  • InputConfig : 사용자 정의 InputAction을 관리하는 Data Asset 클래스
    • 2가지 타입의 IA를 관리 : 일반적인 입력에 의해 발동하는 IA와 특별한 입력에 의해 발동하는 IA
    • 특별한 입력에 의해 발동하는 IAGameplayTag를 통해 해당 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 이벤트와 연결

 

 

로직은 위와 같다

인자로 받은 AuraInputConfigAbilityInputActions 프로퍼티를 순회한다

순회하면서 연결된 IA가 존재하고, 연결된 Tag가 유효하다

연결된 IA3개의 입력 방식으로 동작하는 콜백함수들을 바인드한다

 

3) AuraPlayerController 클래스

 

IA와 연결된 Tag를 관리하는 AuraInputConfig를 멤버변수로 추가한다

어빌리티와 관련한 입력을 수행한 후 호출할 콜백함수을 위와 같이 추가하였다

 

 

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

 

 

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

 

4) 언리얼 에디터

 

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

 

 

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

 

 

PlayerController의 블루 프린트에 AuraInputConfig를 설정한다

 

- 최종 실행 결과

 

728x90
반응형