This is my current solution to third person integration; I handle screen centered aim and non blocking target cases like sky (code in file below) :
Pretty much get center of Pc's viewport (start for line trace), then trace end (center viewport + some adjusted amount for range from center). Perform a line trace using start and end. Add a cross hair UI or just crosshair image to BP overlay widget, just make sure it centered in BP and result is decent cross hair aims.
However this alone is not a ideal since the non targetable objects still cause targetdata to go to origin if not block (sky). So my solution was this part:
if (!CenterHit.bBlockingHit)
{
// No hit — construct a fake hit result at the end of the trace
CenterHit.Location = TraceEnd;
CenterHit.ImpactPoint = TraceEnd;
CenterHit.TraceStart = WorldLocation;
CenterHit.TraceEnd = TraceEnd;
CenterHit.bBlockingHit = false; // Still false, but we send it as positional intent
}
If the centered viewport hit is not a blocking hit simply make one. We have the info to create a start and end, so do that. From my testing and current project there isn't much besides the sky that will cause no blocking hit, but I could be 100% wrong. With that in mind this ensures the fire ball goes into the direction of where we aimed (center of screen) to the end trace. However far you adjust the end trace will determine how far the projectile will go until it destroys itself (Lecture 334 + Q/a will cover firebolt destruction).