首页 > 解决方案 > C++ FTraceDatum 从来没有命中

问题描述

我在虚幻中运行了几个异步线路跟踪,我想等到它们中的每一个都完成。完成后,我想使用他们的命中结果(data.OutHits)。但是,完成后,FTraceDatum似乎仍然包含其默认值(Start并且End都指向原点且OutHits大小始终为 0)。如何获取此跟踪的实际数据?

我在下面包含了非工作代码。

void trace(FVector traceStart, FVector traceEnd)
{   
    // The initialisations are probably of no importance
    TArray<AActor*> ignore_actors_;
    FTraceDelegate traceDelegate;
    FCollisionQueryParams trace_params;
    trace_params.bReturnPhysicalMaterial = get_material;
    trace_params.bTraceComplex = trace_complex;
    trace_params.AddIgnoredActors(ignore_actors);

    // Starting the async trace
    FTraceHandle handle = actor->GetWorld()->AsyncLineTraceByChannel(EAsyncTraceType::Single,
    traceStart, traceEnd,
    collision_channel,
    trace_params,
    FCollisionResponseParams::DefaultResponseParam,
    &onComplete);
        
    // Waiting for the trace to be completed (with or without hits)
    FTraceDatum data;
    while (actor_->GetWorld()->QueryTraceData(handle, data))
    {
        FPlatformProcess::Sleep(0.0001f);
    }

    // data.Start, data.End both give x: 0, y: 0, z: 0 but traceStart and traceEnd both are different 
}

标签: c++asynchronousunreal-engine4

解决方案


推荐阅读