Component position not updating every time when substepping

My setup goes so:

  • actor A that has a physically driven Skeletal mesh as root component. It’s driven by torques or angular velocities
  • actor B that is attached to the previous actor.
  • actor component (C) is a component of B. This one has a physics rigid body.

The physics is set to substepping so I have about 3-4 physics ticks for one logic tick.

I monitor in the pvd, the position of the actor A seems fine and updates a little every substep.
The position of the Rigid body of C doesn’t update every substep. It updates only in the substep immediately before the normal Tick() and the rest of the substeps it won’t move at all.

Is that normal given that setup?
How I can I fix this?

Anyone able to help with that?

I think that game components are updated only at logical updates, so at lower frequency. Component attachment is part of that and is also run at lower frequency. You would need to attach those objects in physics, by welding or a constraint to get what you want. Or you may calculate the attachment yourself in the physics sub-step of the child component (it’s just one relative transform) and then update the child component’s transform manually. You could even try to run the existing code for attachment from a physics sub-step if those methods are accessible (not private etc). I’m obviously talking about C++, not blueprints - they are run at lower frequency as well.