Hello all, so here is my issue, and I’m hoping someone can point me in the right direction:
I have a custom player Pawn class with an imported Static Mesh. The reason I didn’t use a Character was because that needed a skeletal mesh and the player character doesn’t require that it’s a spaceship with 0 animations
The Blueprint for the player pawn looks good. I have a root component with a spring arm and camera plus the static mesh
The issue stems from my custom PlayerController class named PlayerShipController.cpp
Here is the .h file:
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "PlayerShipController.generated.h"
UCLASS()
class SPACEGAME_API APlayerShipController : public APlayerController
{
GENERATED_BODY()
public:
APlayerShipController();
APawn* ControlledPawn;
virtual void SetupInputComponent() override;
void MoveUp();
void MoveDown();
void MoveLeft();
void MoveRight();
};
Here is the .cpp file
#include "GameFramework/Pawn.h"
#include "GameFramework/PawnMovementComponent.h"
#include "PlayerShipController.h"
APlayerShipController::APlayerShipController()
{
ControlledPawn = GetPawn();
ensure(ControlledPawn != nullptr);
}
void APlayerShipController::SetupInputComponent()
{
Super::SetupInputComponent(); //this line here keeps erroring out but I'm not sure why, is wasn't like that beforenot sure why
InputComponent->BindAction("Up", IE_Pressed, this, &APlayerShipController::MoveUp);
InputComponent->BindAction("Down", IE_Repeat, this, &APlayerShipController::MoveDown);
InputComponent->BindAction("Left", IE_Repeat, this, &APlayerShipController::MoveLeft);
InputComponent->BindAction("Right", IE_Repeat, this, &APlayerShipController::MoveRight);
}
void APlayerShipController::MoveUp()
{
UE_LOG(LogTemp, Warning, TEXT("MoveUP"));
ControlledPawn->GetMovementComponent()->AddInputVector(FVector(0.f, 0.f, 1.f));
}
There’s more to it but I cut it off at MoveUp, I have my other movement functions defined as well but they are empty (no issue since they are void)
So it looks like the GetMovementComponent does indeed return a UPawnMovementComponent but this is where I’m stuck because my custom controller class does work it does print the UE_LOG but it crashes right after and after doing some digging online it appears that I need to create my own MovementComponent too??? because Pawns don’t support one by default and it’s up to the programmer???
If that’s the case, how would I go about creating this? Is there any helpful resource that helps me create a basic one without any unnecessary bloat (what I mean by bloat is code specific to their particular use case) I wasn’t aware of this, and I’ve been running into so many hurdles with UE4 it’s insane. When I figure something out there’s yet another thing that smacks me in the face