FCollisionQueryParams TraceParams;
TraceParams.AddIgnoredActor(MyActor);
TraceParams.bTraceComplex = false;
TraceParams.bReturnPhysicalMaterial = false;
bool Hit =GetWorld()->SweepSingleByProfile(HitOut, SphereStartLoc, SphereEndLoc, FQuat(0.0f, 0.0f, 0.0f, 1.0f), TEXT("BlockAll"), FCollisionShape::MakeSphere(Radius), TraceParams);
If SphereStartLoc and SphereEndLoc both intersect the same surface, then I either get no collision, or HitOut.Location == HitOut.ImpactPoint == SphereStartLoc. Even if just the very edge of the spheres are the only things that collide. I think I should get a proper hit location based on the sphere.
If SphereStartLoc doesn’t intersect anything, but somewhere in between or at the end does, then I get a proper hit location.
HitOut.PenetrationDepth and HitOut.Normal seem to be set correctly.
In my test, I’m simply colliding with a basic cube (Modes->Place->Basic->Cube) static mesh actor.