This property exposes the internal CFrame that is manipulated by Animations when a Motor6D is being animated.
Using this property it is possible to blend Roblox Animations with custom animations in Lua. This property should be read from and updated when the Stepped signal fires as this signal is fired immediately following animations being updated.
Here is some example code of how this property can be used:
local PlayersService = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = PlayersService.LocalPlayer
-- Rotate left shoulder joint by 90 degrees
-- in addition to the current animation being applied
RunService.Stepped:connect(function()
local character = LocalPlayer.Character
if character then
character.LeftUpperArm.LeftShoulder.Transform = character.LeftUpperArm.LeftShoulder.Transform * CFrame.Angles(math.rad(90), 0, 0)
end
end)
-- Overwrite current animation for the right arm
RunService.Stepped:connect(function()
local character = LocalPlayer.Character
if character then
character.RightUpperArm.RightShoulder.Transform = CFrame.Angles(math.rad(90), 0, 0)
character.RightLowerArm.RightElbow.Transform = CFrame.new()
character.RightHand.RightWrist.Transform = CFrame.new()
end
end)
This property is scriptable only, it can’t be set in the studio properties widget and it doesn’t serialize. For performance reasons this property won’t fire the Changed signal and it doesn’t replicate.
Oh my god… literally an hour before you posted this I discovered this hidden property after spending 3 hours trying to figure out how to animate a character without removing its motor6Ds or attachments. I’m glad to see this being announced but I’m so irritated that I wasted 3 hours
And yeah this makes things a little difficult.
I recommend using C0/C1 for “additive” effects like that. That way it doesn’t matter what Transform is currently set to.