Движение камеры | Отслеживание движения камеры работает только при зажатой кнопке мыши. UE5 | C++

Здравствуйте коллеги перехожу с unity на UE5, так что могу где-то быть не точным.

Я создал Pawn(Не обращайте внимание что класс называется MyActor, изначально случайно создал Actor , поменял на Pawn)

Проблема в том что движение камеры , должно происходить при движении мыши и оно происходит , но только если какая-то из кнопок мыши нажата.

CPP


#include "MyActor.h"
#include "GameFrameWork/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
#include "GameFrameWork/PlayerController.h"

// Sets default values
AMyActor::AMyActor()
{
    
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;

    SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
    Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));

    RootComponent = SpringArm;

    Camera->SetupAttachment(SpringArm);

    SpringArm->TargetArmLength = 1000.0f;

    SpringArm->SetRelativeRotation(FRotator(-60.0f, 0.0f, 0.0f));
    SpringArm->bDoCollisionTest = false;

}

void AMyActor::BeginPlay() 
{
    Super::BeginPlay();
    APlayerController* PC = GetController<APlayerController>();

    if (PC) 
    {
        
        PC->bShowMouseCursor = true;

        FInputModeGameAndUI InputMode;

        InputMode.SetHideCursorDuringCapture(false); // Важно! Не скрывать курсор при движении
        InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock); // Курсор не привязан к окну
        PC->SetInputMode(InputMode);
    }
}

void AMyActor::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) 
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAxis("MouseX", this, &AMyActor::MoveCameraX);
    PlayerInputComponent->BindAxis("MouseY", this, &AMyActor::MoveCameraY);


}

void AMyActor::MoveCameraX(float AxisValue)
{
    UE_LOG(LogTemp, Warning, TEXT("Mouse X: %f"), AxisValue);
    InputX = AxisValue;


}
void AMyActor::MoveCameraY(float AxisValue)
{
    UE_LOG(LogTemp, Warning, TEXT("Mouse Y: %f"), AxisValue);
    InputY = AxisValue;

}

void AMyActor::Tick(float DeltaTime) 
{
    Super::Tick(DeltaTime);

    FRotator CameraRotation = SpringArm->GetComponentRotation();

    FVector ForwardDirection = FRotationMatrix(CameraRotation).GetUnitAxis(EAxis::X);
    ForwardDirection.Z = 0.0f; // Обнуляем вертикальную составляющую
    ForwardDirection.Normalize();
    FVector RightDirection = FRotationMatrix(CameraRotation).GetUnitAxis(EAxis::Y);


    FVector NewLocation = GetActorLocation();

    NewLocation += ForwardDirection * InputY * MoveSpeed * DeltaTime;
    NewLocation += RightDirection * InputX * MoveSpeed * DeltaTime; 

    SetActorLocation(NewLocation);

}



.h


#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Pawn.h"
#include "MyActor.generated.h"

class USpringArmComponent;
class UCameraComponent;

UCLASS()
class ROGUELIKE_API AMyActor : public APawn
{
    GENERATED_BODY()

public: 
    
    AMyActor();

protected:
    virtual void BeginPlay() override;
    virtual void Tick(float DeltaTime) override;
    virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;

    void MoveCameraX(float AxisValue);
    void MoveCameraY(float AxisVulue);

    
private:
    float InputX = 0.0f;
    float InputY = 0.0f;
    

protected:
    UPROPERTY(VisibleAnyWhere);
    USpringArmComponent* SpringArm;
    
    UPROPERTY(VisibleAnyWhere);
    UCameraComponent* Camera;

    UPROPERTY(VisibleAnyWhere);
    float MoveSpeed = 1000.0f;

};

1.Проверил настройки проекта Input выставлен правильно

2.Есть GameModeBase там одна строчка которая делает мой Pawn базовым, в World Setting он выбран с этим тоже проблем нет

3.Пробовал сделать прямой ввод без Axis , через EKEY , и через BindAxisKey (не помогло)

P.S В отладчике значения Axis от -1 до 1 меняются , но опять же только если какая-то из кнопок мыши зажата просто так не работает.

Теряюсь в догадках , прошу помощи у более опытных коллег чем я.


Ответы (0 шт):