How to animate Tool Handles easily! [OLD POST]

Hello, not sure if this is just me but I do believe this is a main issue especially with the Motor6DHandler (one provided in this tutorial), every time I equip my tool it seems to be working perfectly and everything is animated just how I wanted, however, the problem occurs when another player joins the game. On my screen my tools are animated perfectly and on the other players the tool is stuck in the middle of my arm… here is a screenshot to see what I mean;

1 Like

I have the same issue, unfortunately it only occurs when a player equips a tool for the very first time. Sometimes after they die it will occur again, and there’s no real way of fixing it. I think it has something to do with the way Roblox replicates Motor6D changes to other players.

This is completely out of my control, unfortunately.

Edit

Adding on to this, another game called Mortem Metallium has this issue as well. The creator uses Motor6Ds to animate his tool handles, and this issue seems to occur on there as well. I’ve seen multiple people have tools stuck in their right arm for seamlessly no reason. I think it might be an engine bug, but since I’m not a regular, I cannot post about it.

Edit 2

I’m currently releasing a fix to the main Motor6D handler to the people who have “RequiresHandle” turned off. If you’re not using a handle, the Motor6D handler will Infinite Yield, so I’m publishing that fix right now. I don’t think you’re using RequiresHandle = false but it’s a fix I intended to publish. :+1:

Edit 3

If you intend to animate tools without using a part called Handle, then please use the Updated Motor6DHandler, which has been published to the main model: Motor6DHandler - Roblox

Thanks for the reply, quite unfortunate that this is an issue. I did attempt a short fix of respawning the players once they load in however that didn’t really work out so I just removed it, It is sad that this bug has been going around for bugs and still not fixed by ROBLOX…

1 Like

The issue gets fixed if the player re-equips their tool. You won’t find any other solution that doesn’t have this bug. It’s just something wrong with Motor6Ds themselves.

What you could do is make a check to see if the player equipped the tool for the very first time, then make them un-equip and re-equip the tool automatically. That way, the animation shows up properly for all peoples screens, with pretty fast equip time.

Or, you could attempt to use the Motor6DHandler Module that I’ve been working on behind the scenes. No documentation yet, but you can look at the source code of the module with the BTRoblox plugin installed to figure out how it works

I don’t intend to Allow Copying until the module is set to my liking. You should be able to require by ID just fine however, or you can put the code in a ModuleScript. Once I actually make the Module a publicly available one, you can switch over to the ID so you can get consistent updates in-case of bugs.

Omg that is really helpful! But… is it possible to add another lightsaber as dual wield? (On both hands)

1 Like

I’ve responded to your DM! The answer will be there.

For anyone else reading, Yes. It just requires 2 Motor6Ds instead of 1. (I don’t mean make 2 Motor6DHandler scripts, I mean add another one to the already existing Motor6D Handler.)

1 Like

I can’t seem to make the animation play at all. Can you help me out?
It plays for the character through the animate script in StarterCharacterScripts, but not for the Tool itself.
No output errors either.
Here’s my script:

Your issue might be because of the fact that the Motor6D handler is a server sided script, and you’re using a Local Script. I don’t understand why people use Local Scripts for animating their tools. I use Server script all the time and I never get any issues out of it.

Try making the switch.

Allright I’ll see if that fixes the issue.

Update: I gave up on making this work. I’ve tried 5 different methods and none of them worked for my custom character so feel free to ignore my posts.

It’s definitely the custom character. The Motor6D should be moving the tool inside the center of the arm if it refuses to animate. Can you send a tree (explorer) of your custom character? Make sure you open every directory so I can see if there’s anything that could be preventing this from working.

One good thing to note, if you have “RequiresHandle” turned off, and you’re using a part named “Handle” the motor6d handler will not attempt to destroy any RightGrip welds. The RightGrip is what prevents Motor6Ds from working. I’ll update the model to print in the console if “RequiresHandle” is true, and if it finds a part named “Handle”.

@IvanDani75

Please update your script. I noticed a mistake I made, and made some fixes for RequiresHandle even further.

1 Like

I was already struggling for several days to make 2 other character’s abilities so I decided to not waste even more development time and just give her a dash ability instead since that’s way easier to do and I already managed to make the other two characters with the help of a friend, but yeah I can test the update still.
It just won’t interrupt the actual development of my game anymore if I play around with it to maybe get it to work.

1 Like

Okay so I just updated the script to latest and the dual wield still not worked on R6 :c is there way to get it worked?

Because

Usually animations performed on Rigs (with Humanoids) are client sided.
They mention it here:

I’m talking about tools, not StarterCharacterScripts. If it’s StarterCharacterScripts I completely understand, but for tools it’s almost useless if you plan to use .Activated, .Equipped or .Unequipped anyways.

Thanks for trying though.

Edit: Not to mention using more scripts than you should is not proper coding etiquette!

you’re basically referencing the StarterCharacter in the StarterPlayer which isn’t the same as the character you’re controlling, also theres a lot of wait errors you should instead write

local plr = game:GetService("Players").LocalPlayer
local chr = plr.Character or player.CharacterAdded:Wait()
local hum = chr:FindFirstChild("Humanoid")

by the way, i don’t recommend doing this chr thing in the tool at all, it’s only basically referencing to the first character you spawned in so if you died, the script would still be in the look inside the old first character so i recommend getting the tool’s parent as a character variable since that is where the tool is located at and adjust some vars.

hey, I seem to have some issues with this…
First of all, the animation literally wont apply to the hammer, and I’m very sure that that I did it right. (don’t quote me on that, I might’ve definitely made a stupid little mistake.)
image
Hierarchy of dummy.
image
I followed the tutorial, am I supposed to make the hierarchy of the dummy different?


This is what currently happens when I equip^

This is what is supposed to happen^

Do you have:

RequiresHandle set to false? If so, then you should be fine as long as Hammer is a descendant of the Tool. NOT your arm. That’s the issue.

You don’t need to clone a fake to the characters arm because 2 motor6d’s that do the same thing will collide.

If you animated initially with a part named “Handle” but later called it “Hammer” the animation won’t play because the keyframe name is different.

I would personally just call the hammer “Handle” and keep RequiresHandle turned on for the best experience.

I tried it with it set to true, and that changed nothing.
I’ll try animating the hammer with the name “Handle” and see what happens

If you animated the animation with the hammer being called “Handle” initially, it will expect that name only.