Bone snapping back to its original position

Using the bone Instance, when I change its Transform it snaps back to its original CFrame.
To counter that, I am using a RunService.Stepped connection.

However, If I were to replicate this to the other clients, I’d need to constantly change the value for the others too.

Am I doing something wrong, or is there another way? Games like Dinosaur Worlds Mobile have this effect with mesh deformation.


As with Motor6Ds, the Transform property is meant to be used for animating the bone, and is ephemerial when animations are playing on the character (gets reset to identity on Stepped). Setting Bone.CFrame and Bone.WorldCFrame on the other hand will persist, just as with an Attachment.

Changes to Bone.Transform don’t replicate by design. The idea is that if you’re writing a custom animator, you run the animation playback code on every client, and only sync on the playback time. You don’t generally want to replicate the CFrames of potentially hundreds of bones to every client every frame. Changes to CFrame and WorldCFrame will replicate, so you use these to set a reference pose, or static pose, but not for animating every frame.

1 Like