Movement Input
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Project/Content/Core/Game/BP_PlayerController.uasset
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Project/Content/Core/Game/BP_PlayerController.uasset
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1,5 +1,7 @@ | ||||
| // #define private protected | ||||
|  | ||||
|  | ||||
| #include "CoreMinimal.h" | ||||
| // #define private protected | ||||
|  | ||||
| class UInputMappingContext; | ||||
| class  UInputAction; | ||||
| struct FInputActionValue; | ||||
| class  UInputMappingContext; | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| #include "GasaPlayerController.h" | ||||
|  | ||||
| #include "Engine/LocalPlayer.h" | ||||
| #include "EnhancedInputComponent.h" | ||||
| #include "EnhancedInputSubsystems.h" | ||||
|  | ||||
| AGasaPlayerController::AGasaPlayerController() | ||||
| @@ -8,6 +9,58 @@ AGasaPlayerController::AGasaPlayerController() | ||||
| 	bReplicates = true; | ||||
| } | ||||
|  | ||||
| void AGasaPlayerController::Move(FInputActionValue const& ActionValue) | ||||
| { | ||||
| #if 0 | ||||
| 	FVector2D AxisV     = ActionValue.Get<FVector2D>(); | ||||
| 	FRotator ControlRot = GetControlRotation(); | ||||
| 	FRotator YawRot     = FRotator(0.f, ControlRot.Yaw, 0.f); | ||||
|  | ||||
| 	FVector FwdDir   = FRotationMatrix(YawRot).GetUnitAxis(EAxis::X); | ||||
| 	FVector RightDir = FRotationMatrix(YawRot).GetUnitAxis(EAxis::Y); | ||||
|  | ||||
| 	APawn* Pawn = GetPawn<APawn>(); | ||||
| 	if (Pawn) | ||||
| 	{ | ||||
| 		Pawn->AddMovementInput(FwdDir,   AxisV.Y); | ||||
| 		Pawn->AddMovementInput(RightDir, AxisV.X); | ||||
| 	} | ||||
| #else | ||||
| 	FVector2f AxisV = FVector2f(ActionValue.Get<FVector2D>()); | ||||
| 	FQuat // FQuat isomorphic to FRotor (Hypothetical Def) | ||||
| 	ControlRotor = GetControlRotation().Quaternion(); | ||||
| 	// ControlRotor.Normalize();  // The Quaternion should always be a versor with UE... | ||||
|  | ||||
| 	FQuat4f | ||||
| 	YawRotor = FQuat4f(FVector3f::UpVector, ControlRotor.GetAngle()); | ||||
| 	// YawRotor.Normalize(); // The Quaternion should always be a versor with UE... | ||||
|  | ||||
| 	FVector3f FwdDir   = YawRotor.RotateVector(FVector3f::ForwardVector); | ||||
| 	FVector3f RightDir = YawRotor.RotateVector(FVector3f::RightVector); | ||||
|  | ||||
| 	APawn* PPawn = GetPawn<APawn>(); | ||||
| 	if (PPawn) | ||||
| 	{ | ||||
| 		PPawn->AddMovementInput(FVector(FwdDir),   AxisV.Y); | ||||
| 		PPawn->AddMovementInput(FVector(RightDir), AxisV.X); | ||||
| 	} | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #pragma region PlayerController | ||||
| void AGasaPlayerController::SetupInputComponent() | ||||
| { | ||||
| 	Super::SetupInputComponent(); | ||||
|  | ||||
| 	UEnhancedInputComponent* | ||||
| 	EIC = CastChecked<UEnhancedInputComponent>(InputComponent); | ||||
| 	{ | ||||
| 		EIC->BindAction(IA_Move, ETriggerEvent::Triggered, this, &ThisClass::Move);	 | ||||
| 	} | ||||
| } | ||||
| #pragma endregion PlayerController | ||||
|  | ||||
| #pragma region Actor | ||||
| void AGasaPlayerController::BeginPlay() | ||||
| { | ||||
| 	Super::BeginPlay(); | ||||
| @@ -26,3 +79,4 @@ void AGasaPlayerController::BeginPlay() | ||||
| 		SetInputMode(MouseMode); | ||||
| 	} | ||||
| } | ||||
| #pragma endregion Actor | ||||
|   | ||||
| @@ -1,18 +1,34 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "GasaCommon.h" | ||||
| #include "GameFramework/PlayerController.h" | ||||
|  | ||||
| #include "GasaPlayerController.generated.h" | ||||
|  | ||||
|  | ||||
| UCLASS(Blueprintable) | ||||
| class GASA_API AGasaPlayerController : public APlayerController | ||||
| { | ||||
| 	GENERATED_BODY() | ||||
| public: | ||||
|  | ||||
| #pragma region Input | ||||
| 	UPROPERTY(EditAnywhere, Category="Input") | ||||
| 	TObjectPtr<UInputMappingContext> IMC; | ||||
|  | ||||
| 	UPROPERTY(EditAnywhere, Category="Input") | ||||
| 	TObjectPtr<UInputAction> IA_Move; | ||||
| #pragma endregion Input | ||||
| 	 | ||||
| 	AGasaPlayerController(); | ||||
|  | ||||
| 	void Move(FInputActionValue const& ActionValue); | ||||
| 	 | ||||
| #pragma region PlayerController | ||||
| 	void SetupInputComponent() override; | ||||
| #pragma endregion PlayerController | ||||
|  | ||||
| #pragma region Actor | ||||
| 	void BeginPlay() override; | ||||
| #pragma endregion Actor | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user