@ClockworkOcean’s answer should solve your problem, but just to clarify why- You’re using a node that is checking for overlap every tick- and ALSO it’s grabbing every component of the actor and ticking for each.
The key parts here being “Component” and “Actor” but ALSO “BeginOverlap” vs “Overlap”. Begin won’t be able to trigger again until they are no longer overlapping- which would trigger an “Event ActorEndOverlap”, as well, if you needed that. BUT if you use “Event ActorBeginOverlap” you shouldn’t need the DoOnce node any longer.
Best practice would be to manually store the actor the first time, then prevent the nodes for running if that actor is matched to the stored value.
Until the end overlap, where you check the actor, and if it matches you unset the actor.
You can substitute actor for component on that logic interchangably.
Since you do things yourself rather than rely on the node itself.
Also I’d argue to check the same way onbeginoverlap as well.
It’s superflous, but it could also not be depending on the engine and what’s going on with the rest of the scene or scenario…
(Say the object is moving and pushing the character for instance, which may cause a temporary disconnect that isn’t really there due to physic updates).
In my case I was getting this weird behaviour because I was using the “Use complex collision as simple” option on the static mesh, using the simple collision worked correctly. Because in my specific case the simple collision generated by unreal wasn’t accurate enough I ended up using blender to create a custom collision and this fixed the issue for me. This video shows how you can create your custom collision if someone needs it. https://www.youtube.com/watch?v=b0LwwNNgZUo