feat: 更新角色移动时旋转的功能
This commit is contained in:
@@ -74,7 +74,7 @@ void ACameraPawn::BeginPlay()
|
||||
|
||||
// 附加到父物体
|
||||
this->AttachToActor(FollowTarget, FAttachmentTransformRules::KeepWorldTransform);
|
||||
|
||||
this->GetRootComponent()->SetAbsolute(false, true, true);
|
||||
}
|
||||
|
||||
// 设置自身旋转
|
||||
|
||||
@@ -12,10 +12,19 @@
|
||||
void AMyCharacter::Move(const FInputActionValue& Value)
|
||||
{
|
||||
auto f2d = Value.Get<FVector2D>();
|
||||
auto f = GetActorForwardVector();
|
||||
auto r = GetActorRightVector();
|
||||
|
||||
// 移动
|
||||
auto f = FRotator(0, GetControlRotation().Yaw, 0).Vector();
|
||||
auto r = -f.Cross(FVector::UpVector);
|
||||
AddMovementInput(f * f2d.X);
|
||||
AddMovementInput(r * f2d.Y);
|
||||
|
||||
// 转向
|
||||
if (f2d.SizeSquared() > 0.01f)
|
||||
{
|
||||
FRotator Rot = FRotator(0, FMath::Atan2(f2d.Y, f2d.X) * 180.0f / PI, 0);
|
||||
SetActorRotation(Rot);
|
||||
}
|
||||
}
|
||||
|
||||
void AMyCharacter::BeginRun(const FInputActionValue& Value)
|
||||
@@ -84,6 +93,11 @@ AMyCharacter::AMyCharacter()
|
||||
PrimaryActorTick.bCanEverTick = true;
|
||||
|
||||
GetCharacterMovement()->GetNavAgentPropertiesRef().bCanCrouch = true;
|
||||
|
||||
// 禁用控制器旋转
|
||||
bUseControllerRotationPitch = false;
|
||||
bUseControllerRotationYaw = false;
|
||||
bUseControllerRotationRoll = false;
|
||||
}
|
||||
|
||||
// Called when the game starts or when spawned
|
||||
|
||||
Reference in New Issue
Block a user