Arms and head “look” in the same direction as the UpperTorso when UpperTorso.Waist.C0 is rotated, even when the head and arms are being animated (UpperTorso.Waist is a motor6D, also the AnimationPriority is Enum.AnimationPriority.Action).
I’ve experienced this issue as well. Setting Workspace.AnimationWeightedBlendFix to ‘disabled’ serves as a temporary fix but hopefully the official fix comes soon as the AnimationWeightedBlendFix property is slated to be removed on November 1, 2022.
We’re actively exploring ways to make it easier to do procedural animation through Lua code that will actually replicate to the server and other clients. You can currently animate joints via Lua by updating the Motor6D.Transform property on RunService.Stepped, but if done from a LocalScript on your own character, it will not replicate to the Server or to other clients. It requires manual replication via RemoteEvents, which is cumbersome.
Motor6D.C0 and Motor6D.C1 are the part-to-joint-pivot CFrames that are initialized when your character spawns, from pairs of attachments that have “RigAttachment” in their names. Local changes to them don’t replicate either. These values aren’t meant to be animated; there is a separate animatable Transform property sandwiched between them that is intended changed every frame. A Motor6D’s three CFrames all get multiplied together in the order C0 * Transform * C1:Inverse() when the joints are evaluated, so anything you would have done to C0 directly should instead be done as a post-multiply using Transform. The Animator also sets Transform, so if you’re blending a procedural change with animation changes, you may not want to just set (overwrite) Transform, you may need to modify it instead.
Wherever possible though, animation should be done with animations, not code. There is no mechanism available right now to procedurally animate on the client from Lua and have it replicate automatically, or with temporal consistency or interpolation, to the server or other clients. Animation on the other hand is synched to a real-time clock on each machine, and interpolated, so it’s smooth.
Setting Workspace.Retargetting to disabled does infact unlock the arms, but it won’t stay disabled for me. If I set it to disabled, it switches to default in player or if I restart studio. If anybody else is having this issue, you can set it to disabled during runtime with this code:
I am also experiencing this issue. I am very upset that not only has Roblox forced AnimationWeightBlendedFix onto us, but will also presumably force Retargeting onto us. While retargeting mostly fixes the issue, I am completely unsure how to make arms rotate with the torso with it enabled. I need that to make the weapon I’m holding point towards the way the torso is orientated.
EDIT: It would seem that using Motor6D.Transform mostly resolves the issue