diff --git a/Source/lonese/CameraPawn.cpp b/Source/lonese/CameraPawn.cpp index 2e8bbe3..acdeaf8 100644 --- a/Source/lonese/CameraPawn.cpp +++ b/Source/lonese/CameraPawn.cpp @@ -27,7 +27,10 @@ void ACameraPawn::CameraMove(const FInputActionValue& Value) auto r = GetActorRightVector(); auto f = r.Cross(FVector::UpVector); f.Normalize(); - SetActorLocation(GetActorLocation() + f * f2d.X * MoveSpeed + r * f2d.Y * MoveSpeed); + auto l = GetRootComponent()->GetRelativeLocation() + f * f2d.X * MoveSpeed + r * f2d.Y * MoveSpeed; + l.X = FMath::Clamp(l.X, -CameraMoveClamp, CameraMoveClamp); + l.Y = FMath::Clamp(l.Y, -CameraMoveClamp, CameraMoveClamp); + SetActorRelativeLocation(l); } void ACameraPawn::CameraReset(const FInputActionValue& Value) diff --git a/Source/lonese/CameraPawn.h b/Source/lonese/CameraPawn.h index 64160f8..14e6136 100644 --- a/Source/lonese/CameraPawn.h +++ b/Source/lonese/CameraPawn.h @@ -33,6 +33,8 @@ public: float MaxArmLength = 3000.0f; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") float MinArmLength = 300.0f; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + double CameraMoveClamp = 800.0; UFUNCTION(BlueprintCallable, Category = "Camera") void CameraZoom(const FInputActionValue& Value);