I would love to explain that, if it had happened…
Right now it is fairly accurate, but not perfect. I basically eyeballed the difference between the projected vector and the expected vector and found that I could add the player’s location(which also matches the center of the sphere projection) to the hit vector and divide by 2 to get pretty close to the correct flat vector.
I have a couple ideas about what might be causing the remaining inaccuracy(need to flatten the player location before adding, need to ensure the Z is correctly zeroized, need to make sure the already high poly sphere is high poly enough for a smooth collision sphere surface, etc), but it was close enough for the time being. Needed a rest from that problem.