Z value for velocity of detached actor is always 0 when FPS < 60

I’m working on a project (in Unreal Engine 4.17.1) which is playable in both VR and on desktop. In VR we use the same method for picking up and throwing objects that is used in the VR template, i.e. attach and detach. It works well.

We also use the exact same method of attach and detach for picking up and throwing objects on desktop. The only difference is that instead of attaching to the motion controller actor as we do in VR, we have a scene component as a child to the FPS Camera in the player pawn, so that the component is always located in front of the player at the “grab position”, and we attach the grabbed actor to that component. It works well.

BUT… I noticed that when trying to throw things upwards or downwards, the physics seem off. Throwing an object sideways works perfectly, but when throwing it up it just stops as soon as its released, and doesn’t keep the velocity.
After some investigation, I found first of all that the Z value for the velocity vector is for some reason always set to 0.

But more importantly, I noticed that this only happens when FPS is below 60!

When FPS is above 60, grabbing and throwing objects works perfectly on desktop, but as soon as FPS drops below 60, the Z value for the object velocity when detached is always 0.

Why?

The only thing I can think of is if there is some sort of desynch between physics tick and game tick, but then why would only the Z axis be affected? The physics simulation works fine otherwise. And it works perfectly in VR even at lower FPS - the problem only appears when playing on desktop and attaching to a scenecomponent rather than to the motioncontroller actor.

This has really gotten me stuck and I would love some tips or help with this.