When the animation ends, it does not return exactly to its original position

Hello! I have a camera rig that I use for cutscenes in my game.
I recently noticed an issue where, after the camera rig’s animation ends (either by calling :Stop() or by reaching the end of the animation), the rig does not fully return to its original position/orientation.

As a test, I made a simple animation to reproduce the issue.

  • Here is an example video:

The gray part is the RootPart, and the red part is the Torso, which is used as the camera.

The Joint connects the RootPart and the Torso.

  • Animation in the Animation Editor:

As you can see, after the animation plays and the rig returns to its original position, the Torso is slightly tilted.

The Torso’s original Orientation is 0, -180, 0. However, after the animation finishes and the rig returns to its original position, its Orientation becomes approximately 0, -180, 0.247, causing it to be slightly tilted. (The exact tilt value varies each time.)

I also found that the more frequently I play the animation, or the faster I play it, the more severe the tilt becomes. The position returns to normal, but the Orientation does not.

I tried setting the Torso’s Orientation back to its original value through a script, but it didn’t change. There were no error messages, and even manually changing the value in the Studio Explorer did not seem to have any effect.

Another strange thing is that this issue appeared suddenly one day. I reverted my experience to a much older version but the problem still occurred even in that version.
The other rigs in my game (R6 and R15) work normally. This only seems to happen with this particular camera rig.
The issue occurs both in Roblox Studio and during actual gameplay in the client.
(There are no other scripts or animations affecting the camera rig while this is happening.)

Is there any way to resolve this issue?
Thanks for read!
(I used translation, I hope my meaning comes across correctly. If you need any further information, I will be happy to provide it.)

1 Like

when animation ends set

Motor6D.Transform = CFrame.identity

Should be a fix for that ig

3 Likes

I managed to resolve this by setting joint.Transform = CFrame.identity once the animation track had finished and its fade-out was complete. (Thanks!)

However, since this issue still occurs even on older versions where it previously worked fine, I suspect it might be an engine-level bug (although I’m not certain). Is there an alternative workaround that doesn’t rely on manually resetting joint.Transform?

The alternatives would not be very performant
You can create some hacky ways of “idle” animation that is just having everything set to CFrame.identity constantly being low priority on a loop, but don’t do that
Its a very bad idea

Basically, it doesn’t know what the rest position

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.