
Value타입에 필요한 값 설정
MoveAction이기 때문에 Vector2D

Swizzle Input Axis Values : 입력 받을 값의 축을 설정
Negate : 반대 값 설정
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "SpartaPlayerController.generated.h"
class UInputMappingContext;
class UInputAction;
UCLASS()
class TASK6_API ASpartaPlayerController : public APlayerController
{
GENERATED_BODY()
public:
ASpartaPlayerController();
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputMappingContext* InputMappingContext;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* MoveAction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* JumpAction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* SprintAction;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Input")
UInputAction* LookAction;
virtual void BeginPlay();
};
Property 선언부
#include "SpartaPlayerController.h"
#include "EnhancedInputSubsystems.h"
ASpartaPlayerController::ASpartaPlayerController()
: InputMappingContext(nullptr),
MoveAction(nullptr),
JumpAction(nullptr),
SprintAction(nullptr),
LookAction(nullptr)
{
}
void ASpartaPlayerController::BeginPlay()
{
Super::BeginPlay();
if (ULocalPlayer* LocalPlayer = GetLocalPlayer())
{
if (UEnhancedInputLocalPlayerSubsystem* SubSystem = LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>())
{
if (InputMappingContext)
{
SubSystem->AddMappingContext(InputMappingContext, 0);
}
}
}
}
인풋 액션 생성자에서 초기화
BeginPlay 에서 InputMappingContext 적용

블루 프린트에서 설정

게임모드에서 설정한 컨트롤러 블루프린트를 적용
void ATask7Pawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
if (UEnhancedInputComponent* EnhancedInput = Cast<UEnhancedInputComponent>(PlayerInputComponent))
{
if (ASpartaPlayerController* PlayerController = Cast<ASpartaPlayerController>(GetController()))
{
if (PlayerController->MoveAction)
{
EnhancedInput->BindAction(PlayerController->MoveAction, ETriggerEvent::Triggered, this, &ATask7Pawn::Move);
EnhancedInput->BindAction(PlayerController->MoveAction, ETriggerEvent::Completed, this, &ATask7Pawn::StopMove);
}
if (PlayerController->LookAction)
{
EnhancedInput->BindAction(PlayerController->LookAction, ETriggerEvent::Triggered, this, &ATask7Pawn::Look);
EnhancedInput->BindAction(PlayerController->LookAction, ETriggerEvent::Completed, this, &ATask7Pawn::StopLook);
}
}
}
}
BindAction(Controller에서 설정한 InputAction,입력 이벤트 종류 , 대상 , 실행할 함수)

컨트롤러가 바인딩된 엑터에서 입력에 맞게 바인딩된 함수를 실행한다
WASD를 누르면 Vector2D의 값이 FInputActionValue& 의 value로 들어온다

MoveInput을 활용해서 캐릭터를 움직인다.