From 43650f25cb426ccf07f4eca4f44a97dbfd219c4e Mon Sep 17 00:00:00 2001 From: Jonathan Rampersad Date: Sun, 17 Nov 2024 20:23:54 -0400 Subject: [PATCH] Movement Input --- .../Player/BP_AuraPlayerController.uasset | 3 +++ .../Private/Player/AuraPlayerController.cpp | 25 +++++++++++++++++++ .../Aura/Public/Player/AuraPlayerController.h | 9 +++++++ 3 files changed, 37 insertions(+) create mode 100644 Content/Blueprints/Player/BP_AuraPlayerController.uasset diff --git a/Content/Blueprints/Player/BP_AuraPlayerController.uasset b/Content/Blueprints/Player/BP_AuraPlayerController.uasset new file mode 100644 index 0000000..35f0e4f --- /dev/null +++ b/Content/Blueprints/Player/BP_AuraPlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:748b49100c7f828dd57fde191a8e36a01c67ea3f23835c576aba26707044f982 +size 18841 diff --git a/Source/Aura/Private/Player/AuraPlayerController.cpp b/Source/Aura/Private/Player/AuraPlayerController.cpp index 0a75487..f2c14e0 100644 --- a/Source/Aura/Private/Player/AuraPlayerController.cpp +++ b/Source/Aura/Private/Player/AuraPlayerController.cpp @@ -3,6 +3,7 @@ #include "Player/AuraPlayerController.h" #include "EnhancedInputSubsystems.h" +#include "EnhancedInputComponent.h" AAuraPlayerController::AAuraPlayerController() { @@ -27,3 +28,27 @@ void AAuraPlayerController::BeginPlay() SetInputMode(InputModeData); } +void AAuraPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + + UEnhancedInputComponent* EnhancedInputComponent = CastChecked(InputComponent); + EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AAuraPlayerController::Move); +} + +void AAuraPlayerController::Move(const FInputActionValue& InputActionValue) +{ + const FVector2D InputAxisVector = InputActionValue.Get(); + const FRotator Rotation = GetControlRotation(); + const FRotator YawRotation(0.f, Rotation.Yaw, 0.f); + + const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); + const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); + + if (APawn* ControlledPawn = GetPawn()) + { + ControlledPawn->AddMovementInput(ForwardDirection, InputAxisVector.Y); + ControlledPawn->AddMovementInput(RightDirection, InputAxisVector.X); + } +} + diff --git a/Source/Aura/Public/Player/AuraPlayerController.h b/Source/Aura/Public/Player/AuraPlayerController.h index 60059b1..fc0f92d 100644 --- a/Source/Aura/Public/Player/AuraPlayerController.h +++ b/Source/Aura/Public/Player/AuraPlayerController.h @@ -6,6 +6,8 @@ #include "GameFramework/PlayerController.h" #include "AuraPlayerController.generated.h" +struct FInputActionValue; +class UInputAction; class UInputMappingContext; /** @@ -22,7 +24,14 @@ public: protected: virtual void BeginPlay() override; + virtual void SetupInputComponent() override; + private: UPROPERTY(EditAnywhere, Category="Input") TObjectPtr AuraContext; + + UPROPERTY(EditAnywhere, Category="Input") + TObjectPtr MoveAction; + + void Move(const FInputActionValue& InputActionValue); };