c++ - 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
}
解决方案
推荐阅读
- unity3d - Unity 编辑器无法正确缩放
- android - 在子目录 DocumentFile 对象的 Uri 上调用 DocumentFile.fromTreeUri() 时的意外行为
- git - 如何通过 git 自动分发编译文件
- node.js - 反应代理未连接到 api url
- python - Python /从列表中添加前一个元素
- jquery - 选中复选框时的 Jquery 数据表,所有行都应传输到新的 jquery 数据表
- laravel - 如何在 Laravel-websockets 中使用 CloudFlare SSL
- r - 在 R studio 中对日期时间格式应用条件时无法获取数据
- python - 如何编写脚本来删除python中的多个文件?
- awk - 计算列的平均长度