首页 > 解决方案 > UE4 CableComponent 因未知原因未渲染

问题描述

我正在尝试使用 c++ 而不是蓝图来创建抓钩的视觉方面,并且我一直在尝试让它渲染。据我所知,这应该是正确设置的。这是我的代码:

// CharacterConstructor:
ADemoCharacter() {
...
    Cable = CreateDefaultSubobject<UCableComponent>(TEXT("Cable"));
    Cable->SetupAttachment(FP_MuzzleLocation);
    Cable->SetAttachEndTo(this, RootComponent->GetDefaultSceneRootVariableName());
    Cable->NumSegments = 1;
    Cable->EndLocation = FVector(0.0f, 0.0f, 0.0f);
...
}

void OnGrapple() {
    ...
    // Previous code does SphereTrace and finds a hit, the following code runs only if a hit is successfully found:
    if (hit) {
        FVector_NetQuantize impactPoint = outHit.ImpactPoint;
        
        FVector HookPointPosition = FVector(impactPoint.X, impactPoint.Y, impactPoint.Z);
        FRotator HookPointRotation = FRotator(0.0f, 0.0f, 0.0f);
        FActorSpawnParameters SpawnParams;

        AActor* HookActor = GetWorld()->SpawnActor<AActor>(HookPoint, HookPointPosition, HookPointRotation, SpawnParams);

        Cable->SetAttachEndTo(HookActor, FName(TEXT("None")), FName(TEXT("None")));
    }
    ...
}

在这个例子中,HookPoint 是一个没有任何功能的默认actor,它基本上只是用来存储第二个电缆连接点的位置。

当我运行上面的代码并触发抓钩时,我编写的物理触发,但 CableComponent 没有出现在屏幕上。我是否错误地附加了端点?

我试过记录 Cable->EndLocation 的位置,它似乎指向正确的位置。但是我找不到检查 CableComponent 是否仍然连接到 FP_MuzzleLocation 的方法,所以我怀疑第一个 SetAttachEndTo 可能没有正确设置初始附件,因此当电缆产生时,两个附件端都位于钩点。

标签: c++unreal-engine4

解决方案


推荐阅读