0. 개요
향상된 입력(Enhanced Input)을 이용하여 버튼을 누르면 어빌리티를 활성화하는 방법에 대해서 알아본다.
런타임에 어빌리티 작동 버튼에 대한 매핑을 변경할 수 있게 한다.
각 입력에 대해 게임플레이 태그를 가지게 한다.
1. 입력 액션과 태그 - AuraInputConfig
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "GameplayTagContainer.h"
#include "AuraInputConfig.generated.h"
USTRUCT(BlueprintType)
struct FAuraInputAction
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly)
const class UInputAction* InputAction = nullptr;
UPROPERTY(EditDefaultsOnly)
FGameplayTag InputTag = FGameplayTag();
};
각 입력 액션에 대해 태그를 연결하는 구조체를 생성한다.
2. 입력 액션의 태그를 이용해 어빌리티 찾기 - FindAbilityInputActionForTag
UCLASS()
class AURA_API UAuraInputConfig : public UDataAsset
{
GENERATED_BODY()
public:
const UInputAction* FindAbilityInputActionForTag(const FGameplayTag& InputTag, bool bLogNotFound = false) const;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FAuraInputAction> AbilityInputActions;
};
#include "Input/AuraInputConfig.h"
#include "InputMappingContext.h"
const UInputAction* UAuraInputConfig::FindAbilityInputActionForTag(const FGameplayTag& InputTag, bool bLogNotFound) const
{
for (auto& InputAction : AbilityInputActions)
{
if (InputAction.InputAction && InputAction.InputTag.MatchesTagExact(InputTag))
{
return InputAction.InputAction;
}
}
if (bLogNotFound)
{
UE_LOG(LogTemp, Error, TEXT("InputConfig [%s]에서 InputTag [%s]를 가지는 Ability Input Action을 찾을 수 없음"), *GetNameSafe(this), *InputTag.ToString());
}
return nullptr;
}
인수로 받아온 태그를 이용하여 입력 액션-태그 배열에서 해당 액션을 찾아 반환하는 함수이다.
3. 태그 추가 - AuraGameplayTags
// 마우스 클릭
FGameplayTag InputTag_LMB;
FGameplayTag InputTag_RMB;
// 숫자 입력
FGameplayTag InputTag_1;
FGameplayTag InputTag_2;
FGameplayTag InputTag_3;
FGameplayTag InputTag_4;
헤더의 public 섹션에 마우스 좌, 우, 1~4 까지의 숫자 키에 해당하는 태그를 추가한다.
/*
* 입력 태그
*/
GameplayTags.InputTag_LMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("InputTag.LMB"),
FString("Left Mouse Click")
);
GameplayTags.InputTag_RMB = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("InputTag.RMB"),
FString("Right Mouse Click")
);
GameplayTags.InputTag_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("InputTag.1"),
FString("Number 1 Button")
);
GameplayTags.InputTag_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("InputTag.2"),
FString("Number 2 Button")
);
GameplayTags.InputTag_3 = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("InputTag.3"),
FString("Number 3 Button")
);
GameplayTags.InputTag_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("InputTag.4"),
FString("Number 4 Button")
);
4. Input Config 데이터 에셋 블루프린트 생성
(1) Blueprints - Input에서 우클릭 - 기타 - 데이터 에셋을 클릭한다.
(2) AuraInputConfig를 부모로 하는 블루프린트 DA_AuraInputConfig를 생성한다.
5. 입력 액션(Input Action) 생성 및 할당
어빌리티 활성화를 위한 1차원 축 입력 액션을 생성한다.
각 버튼에 대해서 생성한다.
이제 입력 매핑 컨텍스트(Input Mapping Context)에서 각 입력 액션에 키를 할당한다.
6. 입력 액션에 대해 태그 연결 - DA_AuraInputConfig
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
8-6. 입력 - (3) 입력 버튼과 버튼 상태에 따른 함수 및 태그 바인딩 (0) | 2024.12.03 |
---|---|
8-5. 입력 - (2) 액션에 어빌리티 연결 / 커스텀 입력 컴포넌트(Aura Input Component) (0) | 2024.12.03 |
8-3. 게임플레이 어빌리티 - (2) 어빌리티 설정(Settings on Gameplay Ability) (0) | 2024.12.03 |
8-2. 게임플레이 어빌리티 - (1) 어빌리티 부여(Granting Ability) (0) | 2024.10.31 |
8-1. 게임플레이 어빌리티(Gameplay Ability) (0) | 2024.10.31 |