Have you tried creating a new motor6D and naming it to “Shovel” then copying the C0 and C1 values?
If none works, try debugging. Go to workspace and see if something went wrong with the motor6d or print the cloned motor6d’s Part0, Part1, C0, C1 values.
Or go into servermode and zoom to the shovel union. Its C0 and C1 values could be messed up
So, in my game one of the objectives is to get the shovel out of the shed and then dig up under the campfire. But I don’t want to use a tool nor welds, as in the animation for digging, it’ll move the shovel.
what? I didn’t. it teleports the player to where the shovel is at then adds it to the player. It positions them exactly where the shovel should be then teleports the player back.
Then why not just instance.new a Motor6D and name it to the joint which is gonna be needed for animating? Then copy the C0 and C1 then set the Part0 and Part1, then after that, parent it to where it needs to be.
Here’s a basic idea how :LoadAnimation() works
First, it would look for the path of the joint in which you used to animate in the animation editor.
Second, if a joint exists in that path and that object in that path is a motor6D it would proceed to animating
local JointToFind = "Shovel"
local Humanoid = workspace.Char.Humanoid
--[[ The proccess to getting the joint ]]--
-- We'll need to find JointToFind. And it was last seen in Char["Right Arm"]
print(Char["Right Arm"]:FindFirstChild(JointToFind))
--Right now its false.
--Let's add a joint in that path
local newjoint = Instance.new("Motor6D")
newjoint.Name = "Shovel"
newjoint.Parent = Char["Right Arm"]
--Now let's see if it can find it
print(Char["Right Arm"]:FindFirstChild(JointToFind))
-- Now it prints true! It will now proceed to animating that joint.
-- Even though it was created after, it will still get accepted as a joint
Third, it would grab the cframe data from the next keyframe and set the C0 and C1 values accordingly.