Hi all, I’ve put debug messages in my player controllers functions and none of them except the constructor are calling. If anyone can help, it will be much appreciated, thank you ![]()
Heres the code:
PlayerCharacterController.h:
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "PlayerCharacterController.generated.h"
class APlayerCharacter;
UCLASS()
class GUARDIANSOFSUNSHINE_API APlayerCharacterController : public APlayerController
{
GENERATED_BODY()
public:
APlayerCharacterController(const FObjectInitializer& PCIP);
// Called every frame
virtual void PlayerTick(float DeltaTime) override;
virtual void Tick(float DeltaTime) override;
void UpdateCharacter();
void UpdateAnimation();
// The paper sprite component that will hold our idle sprite when it is needed
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "IdleSprite")
class UPaperSpriteComponent* IdleSpriteComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "IdleSprite")
class UPaperSprite* IdleSprite;
// The animated flipbook that will have our walking animation
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PaperFlipbook")
class UPaperFlipbookComponent* WalkingComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PaperFlipbook")
class UPaperFlipbook* WalkingAnimation;
// The animated flipbook that will have our jumping animation
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PaperFlipbook")
class UPaperFlipbookComponent* JumpingComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PaperFlipbook")
class UPaperFlipbook* JumpingAnimation;
// Player references
UPROPERTY(EditAnywhere)
TSubclassOf<APlayerCharacter> PlayerCharacterObject;
APlayerCharacter* PlayerCharacter;
// Movement functions
UFUNCTION()
virtual void SetupInputComponent() override;
void MoveHorizontal(float Value);
};
PlayerCharacterController.cpp:
#include "PlayerCharacterController.h"
#include "PlayerCharacter.h"
#include "GameFramework/Controller.h"
#include "PaperFlipbookComponent.h"
#include "PaperSpriteComponent.h"
#include "Engine.h"
#define print(text) if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 1.5, FColor::Green, text)
APlayerCharacterController::APlayerCharacterController(const FObjectInitializer& PCIP) : Super(PCIP)
{
PrimaryActorTick.bCanEverTick = true;
PrimaryActorTick.bStartWithTickEnabled = true;
IdleSpriteComponent = PCIP.CreateDefaultSubobject<UPaperSpriteComponent>(this, TEXT("IdleSpriteComponent"));
WalkingComponent = PCIP.CreateDefaultSubobject<UPaperFlipbookComponent>(this, TEXT("WalkingComponent"));
JumpingComponent = PCIP.CreateDefaultSubobject<UPaperFlipbookComponent>(this, TEXT("JumpingComponent"));
// Get a reference to the PlayerCharacter
if (PlayerCharacterObject)
{
PlayerCharacter = Cast<APlayerCharacter>(PlayerCharacterObject);
}
}
void APlayerCharacterController::PlayerTick(float DeltaTime)
{
Super::PlayerTick(DeltaTime);
print("PlayerTick");
if (PlayerCharacter)
{
UpdateCharacter();
}
}
void APlayerCharacterController::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
print("Tick");
}
void APlayerCharacterController::SetupInputComponent()
{
Super::SetupInputComponent();
EnableInput(this);
print("Input");
InputComponent->BindAxis("MoveHorizontal", this, &APlayerCharacterController::MoveHorizontal);
}
void APlayerCharacterController::MoveHorizontal(float Value)
{
print("Moving");
if (PlayerCharacter)
{
PlayerCharacter->MoveHorizontal(Value);
}
}
void APlayerCharacterController::UpdateAnimation()
{
}
void APlayerCharacterController::UpdateCharacter()
{
// Update animation to match the motion
UpdateAnimation();
const FVector PlayerVelocity = PlayerCharacter->GetVelocity();
float TravelDirection = PlayerVelocity.X;
print(FString::SanitizeFloat(TravelDirection));
}