I met the same problem in 2023. So should I use the sweep tracing in each tick instead of the OnComponentBeginOverlap event? It seems not a good practice.
It seems I should use ECollisionEnabled::ProbeOnly, but I can not find some example about it. I want a component attach to Socket, and it will trigger OnHit delegate.
I had the same issue. UE 5.3. A workaround is just to grab the actor’s location when the collision occurs, the result is very close (if not the same) as when using the Sweep Result. It worked perfectly for me.
Here’s one solution I’ve come up with that works well. If your sphere/box/capsule collision is meant for a weapon, what you can do is open up the mesh of the weapon, add a socket, then use a “Get Socket Location” and put in the name of the new socket you created. This will get the location of the socket you placed in the mesh and use it as a location to spawn your effects. If you wanted to be more accurate, you could put multiple sockets in the mesh at different locations and use a “Get distance to” node from the collision component actor to the target that’s going to be hit, then use a “greater than” node with a branch to set different socket locations for the emitter to spawn at.
there is variable bFromSweep let you known that hitresult will be valid or not.
bFromSweep will be false mean hit result will return default value. when the owner dont have movement like projectile movement. Note event if projectile movement is exist, it must have velocity to make bFromSweep return to true otherwise it still be false