When you say it is updated with the same dt as the space, is it a flat 1/30 (or 1/60) each call to Update, or are you passing the elapsedGameTime.TotalSeconds?
There may be a frame stutter which the animated object deals with by moving further due to a longer elapsed time, while the engine only moves forward 1/30 (or 1/60) of a second. If this is the case, you can enable internal time stepping:
Code: Select all
space.simulationSettings.timeStep.useInternalTimeStepping = true;
The engine will try to simulate the space.update passed-in value by taking a number of 1/30 (or 1/60) steps. If there's time left, it will interpolate some of the entity's properties to avoid a jerky appearance. Interpolated properties include orientationQuaternion/orientationMatrix, centerPosition, and worldTransform (so you'd have to use one of them to set the graphics transform instead of an "internal" property like internalCenterPosition).