【问题标题】:Camera Shake Not Activating Unreal C++相机抖动未激活虚幻 C++
【发布时间】:2019-07-20 20:27:03
【问题描述】:

我正在尝试在 Unreal C++ 中为我的角色设置相机抖动。

目前,我在头类中声明了实例变量。

使用日志输出,代码到达 OnFire() 函数中的正确位置,这意味着没有一个指针为空。但是相机抖动不起作用。

UPROPERTY(EditAnywhere)
UCameraShake* CShake;

// 我是这样称呼它的

void AZombieCharacter::BeginPlay(){
    SetUpCameraShake();
}


...

void AZombieCharacter::OnFire() {

...
    auto CTRLR = UGameplayStatics::GetPlayerController(GetWorld(), 0);

    if (CTRLR) {
        auto CM = CTRLR->PlayerCameraManager;
        if (CM) {
            CM->PlayCameraShake(CShake->GetClass(), 1.0f);
        }
        else {
            UE_LOG(LogTemp, Warning, TEXT("CANNOT FIND CM"));
        }
    }
    else {
        UE_LOG(LogTemp, Warning, TEXT("CANNOT FIND CTRLR"));
    }
}
...
void AZombieCharacter::SetUpCameraShake() {


    CShake = UCameraShake::StaticClass()->GetDefaultObject<UCameraShake>();

    CShake->OscillationDuration = 4.f;
    CShake->OscillationBlendInTime = 0.5f;
    CShake->OscillationBlendOutTime = 0.5f;

    CShake->RotOscillation.Pitch.Amplitude = FMath::RandRange(5.0f, 10.0f);
    CShake->RotOscillation.Pitch.Frequency = FMath::RandRange(25.0f, 35.0f);

    CShake->RotOscillation.Yaw.Amplitude = FMath::RandRange(5.0f, 10.0f);
    CShake->RotOscillation.Yaw.Frequency = FMath::RandRange(25.0f, 35.0f);
}

谢谢。

【问题讨论】:

    标签: c++ unreal-engine4


    【解决方案1】:

    Play Camera Shake 接受 UClass / TSubClassOf&lt;UCameraShake&gt; 知道我们会认为这个函数最终会构造一个新对象并忽略默认对象选项。

    我建议继承UCameraShake 类并使用TSubClassOf 来存储您的类类型,而不是像CShake 这样的指针。因为它可能在你不知道谁知道的情况下被垃圾收集?

    这是关于 UCameraShake 的 C++ 教程。 https://unrealcpp.com/camera-shake/

    您的奶昔无法播放的原因可能是没有将实际参数传递给奶昔。尽管您尝试设置默认值,但只有默认值,它似乎没有考虑到新创建的对象。

    【讨论】:

    • 感谢您的回复。我确实看到了该教程,但我试图在不创建一个全新的类的情况下做到这一点,就像他们在教程中所做的那样。有什么建议吗?
    • 正如 ue4 文档所说,您不应使用此功能。返回的 ptr 是不可变的(您无法真正更改您希望以这种方式更改的对象的值)。您必须创建自己的类来覆盖默认设置 afaik
    • UCameraShake const* const ShakeCDO = GetDefault(ShakeClass)
    • 在camera修饰类中shake类是这样使用的,这可能会给你一些提示
    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多