0. 개요

이전 포스트에서 입력 액션을 누르는 세 가지 방법에 따라 함수를 바인딩하는 함수를 정의했다.

이제 누름, 뗌, 누르고 있음 세 가지 상태에 따른 함수를 생성한다.

 

 

1. 바인딩 호출

(1) 버튼을 누르는 세 가지 상태 함수 - AuraPlayerController

#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "GameplayTagContainer.h"
#include "AuraPlayerController.generated.h"

class UInputMappingContext;
class UInputAction;
class IEnemyInterface;
class UAuraInputConfig;

UCLASS()
class AURA_API AAuraPlayerController : public APlayerController
{
	GENERATED_BODY()
    
~~~~~~~~~~~~~~~~~~~~~~

	// 버튼 입력 방법에 따른 함수
	void AbilityInputTagPressed(FGameplayTag InputTag);
	void AbilityInputTagReleased(FGameplayTag InputTag);
	void AbilityInputTagHeld(FGameplayTag InputTag);

	UPROPERTY(EditDefaultsOnly, Category="Input")
	TObjectPtr<UAuraInputConfig> InputConfig;
};

BindAction 함수에 의해 전달된 태그를 이용해 해당 버튼을 확인하고, 버튼의 눌림 상태에 대한 함수를 정의한다.

 

 

(2) 입력 컴포넌트를 AuraInputComponent로 지정

void AAuraPlayerController::SetupInputComponent()
{
    Super::SetupInputComponent();

    // 커스텀 입력 컴포넌트 유효성 확인
    UAuraInputComponent* AuraInputComponent = CastChecked<UAuraInputComponent>(InputComponent);

    AuraInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AAuraPlayerController::Move);
    
    // 어빌리티와 입력 액션 바인딩
    AuraInputComponent->BindAbiltyActions(InputConfig, this, &ThisClass::AbilityInputTagPressed, &ThisClass::AbilityInputTagReleased, &ThisClass::AbilityInputTagHeld);
}

입력 설정(InputConfig)와 버튼 눌림 상태를 이용해 액션과 어빌리티를 바인딩하는 함수, BindAbilityActions를 호출한다.

 

 

(3) 디버그 및 테스트

void AAuraPlayerController::AbilityInputTagPressed(FGameplayTag InputTag)
{
    GEngine->AddOnScreenDebugMessage(1, 3.f, FColor::Red, *InputTag.ToString());
}

void AAuraPlayerController::AbilityInputTagReleased(FGameplayTag InputTag)
{
    GEngine->AddOnScreenDebugMessage(2, 3.f, FColor::Blue, *InputTag.ToString());
}

void AAuraPlayerController::AbilityInputTagHeld(FGameplayTag InputTag)
{
    GEngine->AddOnScreenDebugMessage(3, 3.f, FColor::Green, *InputTag.ToString());
}

각 입력 상태와 태그를 이용해서 버튼 1, 2, 3을 누르면 디버그 메세지가 나타나는지 확인할 것이다.

 

 

(4) 기본 입력 컴포넌트 클래스 지정

에디터에서 편집 - 프로젝트 세팅 - 입력 - Default Classes에서 기본 입력 컴포넌트 클래스를 커스텀 입력 컴포넌트로 지정한다.

 

 

(5) 플레이어 컨트롤러 블루프린트에서 입력 설정(Input Config) 지정

 

 

(6) 테스트

처음 누르면 빨간색 디버그 메세지와 초록색 디버그 메세지, 누름을 유지하면 초록색 디버그 메세지, 떼면 파란색 디버그 메세지가 발생한다.