【问题标题】:limit first person camera's pitch rotation c++ ue4限制第一人称相机的俯仰旋转c ++ ue4
【发布时间】:2021-02-21 00:12:00
【问题描述】:

所以,在我的第一人称游戏中,我试图限制相机可以上下观察的程度,但到目前为止我还没有获得好的结果。我做了一个非常基本的上下查找方法(我仍然是 C++ 的菜鸟)。我应该在我的代码中添加什么?

void AYT_Character::LookUpAtRate(float value)
{
   AddControllerPitchInput(value * BaseLookUpAtRate* GetWorld()->GetDeltaSeconds());
}

任何帮助都将不胜感激,我想在 c++ 中执行此操作,并且现在尽可能避免使用蓝图。

【问题讨论】:

  • 你试过用夹子吗?
  • 我做到了,我不确定我是否做得对,但它会导致相机不断地自行上下移动。我在方法中创建了一个浮点变量并写了 var = FMath::clamp(value, min, max) 然后我将 var 而不是传递给方法的值放入方法
  • 能否出示相关代码?

标签: c++ unreal-engine4


【解决方案1】:

您可以从 Character 类中将其设置在 BeginPlay() 而不是构造函数中:

APlayerController* PlayerController = Cast<APlayerController>(Controller);
if (PlayerController)
{
    if (PlayerController->PlayerCameraManager)
    {
        PlayerController->PlayerCameraManager->ViewPitchMin = 45.0; // Use whatever values you want
        PlayerController->PlayerCameraManager->ViewPitchMax = 100.0;
    }
}

我删除了 CastToPlayerController 答案,因为它已被弃用。

【讨论】:

  • 我应该在 ACharacter 类中写这个吗?另外,我在某处在线看到了 PlayerCameraManager,但现在我只是用默认的空设置制作了自己的新相机。
  • 但是播放器相机管理器如何连接到我的默认相机?抱歉,我只是迷路了。我已经在我的自定义角色类构造函数中写了这个: PlayerCameraMan = CreateDefaultSubobject(TEXT("PlayerCameraMan")); PlayerCameraMan->ViewPitchMax; PlayerCameraMan->ViewPitchMin;这将如何连接到我已经设置的默认相机组件?
  • 这是在没有播放器相机管理器的情况下设置我的相机的方式: SpringArmComp = CreateDefaultSubobject(TEXT("SpringArmComp")); SpringArmComp->AttachToComponent(GetMesh(), FAttachmentTransformRules::SnapToTargetNotIncludingScale,"Head"); CameraComp = CreateDefaultSubobjectSetupAttachment(SpringArmComp);
  • 已更新以显示正确的代码,因为 CastToPlayerController 已被弃用。
猜你喜欢
  • 1970-01-01
  • 2017-05-24
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多