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
Yup, and many of the proposed solutions presume the overlap collision is on a small surface, or the collider is at the root pivot of the actor. This falls apart when you need to know where on a large surface a hit occurred or if the collider is located offset from the mesh’s desired center of rotation.
I use a collider with physics simulation enabled to generate hit events.
I wrote my own physics logic, so I don’t need standard physics, but there’s no way to disable it. Instead, I move the collider to the actor’s position every tick (using sweep) and do the same for collisions (without sweep).
Because of this, I have to put up with parasitic calculations, but it’s a necessary measure; it allows me to generate hit events while allowing colliding objects to intersect.