From 0ebfd839a772629c96349b22972ebc381b2a4bb4 Mon Sep 17 00:00:00 2001 From: meishibiezb <750783119@qq.com> Date: Sun, 15 Mar 2026 22:42:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/lonese/CameraPawn.cpp | 14 +++++++------- Source/lonese/CameraPawn.h | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Source/lonese/CameraPawn.cpp b/Source/lonese/CameraPawn.cpp index 123bf18..2e8bbe3 100644 --- a/Source/lonese/CameraPawn.cpp +++ b/Source/lonese/CameraPawn.cpp @@ -10,14 +10,14 @@ void ACameraPawn::CameraZoom(const FInputActionValue& Value) { auto f = Value.Get(); - SpringArmComponent->TargetArmLength += f * 10.0f; - SpringArmComponent->TargetArmLength = FMath::Clamp(SpringArmComponent->TargetArmLength, 300.0f, 3000.0f); + SpringArmComponent->TargetArmLength += f * ZoomSpeed; + SpringArmComponent->TargetArmLength = FMath::Clamp(SpringArmComponent->TargetArmLength, MinArmLength, MaxArmLength); } void ACameraPawn::CameraRotate(const FInputActionValue& Value) { auto f = Value.Get(); - FRotator r = FRotator(0.0f, f * 2.0f, 0.0f); + FRotator r = FRotator(0.0f, f * RotateSpeed, 0.0f); AddActorWorldRotation(r); } @@ -27,12 +27,12 @@ void ACameraPawn::CameraMove(const FInputActionValue& Value) auto r = GetActorRightVector(); auto f = r.Cross(FVector::UpVector); f.Normalize(); - SetActorLocation(GetActorLocation() + f * f2d.X * 10.0f + r * f2d.Y * 10.0f); + SetActorLocation(GetActorLocation() + f * f2d.X * MoveSpeed + r * f2d.Y * MoveSpeed); } void ACameraPawn::CameraReset(const FInputActionValue& Value) { - SpringArmComponent->TargetArmLength = 1200.0f; + SpringArmComponent->TargetArmLength = InitialArmLength; SetActorRotation(InitialRotation); SetActorRelativeLocation(FVector::ZeroVector); } @@ -46,8 +46,8 @@ ACameraPawn::ACameraPawn() // 初始化 SpringArmComponent 和 CameraComponent SpringArmComponent = CreateDefaultSubobject(TEXT("SpringArmComponent")); SpringArmComponent->SetupAttachment(RootComponent); - SpringArmComponent->TargetArmLength = 1200.f; - SpringArmComponent->bUsePawnControlRotation = true; + SpringArmComponent->TargetArmLength = InitialArmLength; + SpringArmComponent->bUsePawnControlRotation = true;// TODO: 何意味? CameraComponent = CreateDefaultSubobject(TEXT("CameraComponent")); CameraComponent->SetupAttachment(SpringArmComponent, USpringArmComponent::SocketName); diff --git a/Source/lonese/CameraPawn.h b/Source/lonese/CameraPawn.h index 0fcf1b9..64160f8 100644 --- a/Source/lonese/CameraPawn.h +++ b/Source/lonese/CameraPawn.h @@ -16,10 +16,23 @@ public: class USpringArmComponent* SpringArmComponent; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera") class UCameraComponent* CameraComponent; - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera") + UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = "Camera") APawn* FollowTarget; - UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera") + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") FRotator InitialRotation = FRotator(-60.0f, 0.0f, 0.0f); + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + float InitialArmLength = 1200.0f; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + float RotateSpeed = 2.0f; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + float ZoomSpeed =10.0f; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + float MoveSpeed = 10.0f; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + float MaxArmLength = 3000.0f; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Config") + float MinArmLength = 300.0f; UFUNCTION(BlueprintCallable, Category = "Camera") void CameraZoom(const FInputActionValue& Value);