Tool 6D | Tool Animation Compatibility Layer!


A beginner friendly, attribute-based, Tool animation compatibility layer using Motor6Ds!


:wave: | About Me:

Hello everyone, I’ve been making posts on the forum ever since 2020. Tool 6D initially went under the name “Motor6DHandler” at the time as the script was called exactly that. You’d drop it under the root of your Tool and open and edit the scripts values to what you needed.

I’m glad it was able to help about 800+ (back when this was first made) people who put the script into their games to animate their tools. I wasn’t expecting that number alone, and it still shocks me that it continues to grow!

This resource aims to improve upon the older versions, giving you better reliability for animating Tools in a really simple way!


:page_with_curl: | Table of Contents:

  • Prologue: What is Tool 6D?

  • Chapter 1: Setup your Animation Rig w/ Motor6D(s)

  • Chapter 2: Preparing Tool for Tool 6D

  • Chapter 3: Setting up Tool 6D

  • Epilogue (p.1): Testing the Setup

  • Epilogue (p.2): Conclusion


:mag_right: | Prologue: What is Tool 6D?

You might be wondering how this resource is helpful, and I’ll be answering that in this small chapter.

Roblox does not natively support the ability to animate Tool handles of any kind, and the only way to achieve the effect of animating the handle is to manually create animations and use a script to delete the Tool grip and attach Motors.

To inexperienced developers, this ends up being a hassle to work around on their own, much what it was like for me when I first began actual Game Development on this platform. I had to ask a few people and it took a bit for me to fully understand how to achieve the result I wanted.

Now, while Tool 6D in of itself is quite a basic system, it allows you to:

  • Use Attributes to specify Tool/Body parts for Motor6Ds, allowing Animations of any kind
  • Set C0 & C1 offsets to support Blender animations, and different kinds of Tool Grip positions

In short, Tool 6D exists to close the difficulty curve of animating Tool handles by being easily customizable and simple to install! :smile:


:closed_book: | Chapter 1: Setup your Animation Rig w/ Motor6D(s)

I attached a Tutorial on the previous post about setting this up, which I still recommend the average user to follow since it’s more in-depth, but for the sake of a fully explained tutorial, I’ll quickly go through the setup.

If you’re already familiar with animating Motor6Ds (I’m just assuming the average person is not), you can likely skip this step because you’ll likely already know what I’m going to show.

If you wish to follow the previously linked resource on the old post, you can do so here.
(Credit to @H_mzah)

Step 1: Creating a new Dummy Rig.

Create a new Dummy based on whatever type of animation you intend on making (Whether that being R6, or R15, this will work with both)

You can do so by navigating to the Avatar tab sitting on the top of the Studio window:

image

The reason why we need to go here is due to a recent studio overhaul. Roblox relocated the Animation Editor plugin and the Rig Builder plugin to this very tab.

To start, click on the Rig Builder option listed in the Ribbon bar:

Open doing so, you’ll be greeted with this window, which you can select an option from, in the viewport. Select the one you’d like. For me, I’m going to choose R6 for the sake of simplicity.

I personally like to go for the Block Rig, but you can choose others depending on your use case:

image

Step 2: Preparing the Rig w/ Motor6D & Animation.

At this point, you might have something that looks like this. A basic colorless Dummy, with nothing else much to it. That will change:

We’ll need to create an object for them to hold, so for the sake of simplicity, I’m going to use the classic LinkSword. Go ahead and place it within general range of it. (not required, just so you know it’s there, and can keep tabs on it)

At this point, it should roughly look like this:

Now, we’re ready to begin creating a Motor6D to link the Dummy with the Tool (In this case, it’s the sword. For you, it may be something different!)

In order to do this, we need to use the Explorer in Roblox Studio, usually found on the right side of Roblox Studio. If you repositioned the windows around studio it may be located elsewhere, but just locate the Explorer.

Once you do, you’ll see something like this. If your game has a lot more content in it, just search for the Dummy, and the Sword. You can group these both together to make locating it easier:

image

You’ll want to drag your Tools handle (In my case, the sword), into the Dummy’s Character model, as shown in the video below:

(Keep in mind, it may be safer to create a copy of your Tools Handle to use specifically for the Animation Rig, and one for your Tool. That way you can separate the two safely.)

After you’ve done this, you’ll need to create a Motor6D to put inside the Character Model.

To do this, click on the Dummy in the Explorer, and while hovering your mouse over it’s name, you’ll see a + icon next to it.

Clicking the + should cause a menu to pop up. When it does, simply search “Motor6D”, then hit Enter.

If you’re confused, refer to the video below:

Once that is done, click on the newly created Motor6D, then locate the Properties window just like you did when finding the Explorer window.

*You’ll need to set the Part0 to the Body Part you want, and set the Part1 to the Handle of your Tool (In this case, it’s the sword for me).

If you’re confused on this step, refer to the video below:

After you’ve done this, you’ll see the Dummy change in your viewport to something that looks like this. If you see this, you’ve done everything correctly:

If nothing changes, make sure the character is fully unanchored. You can select the model and anchor/unanchor it to make sure the Handle of your tool, and the Body Parts are all unanchored.

Now, just like the previous tutorial, I assume you know how to animate. I’m going to skip the animation step, but the Animation Editor should now be able to animate the Handle part with keyframes like it wasn’t able to before.

Below is an example of it working in action.

Things you need to take note of:

  • You’ll need to make an Idle animation for your Tool to prevent the Motor6D moving the Tool Part back to the origin C0/C1. Alternatively, you can manually adjust the C0/C1 offsets later with the 6D_Config to set your own Tool Grip. This is necessary because Motor6Ds do not work with the default RightGrip that Tools automatically create.

  • Make sure you set Animation priorities properly. (Idle Animation is Action, and for things like swinging a sword, Action2, or higher.) The reason you should do this is to compensate for the Weight based system Animations now use. If you need to do this, the Animation Editor allows you to specify what Animation Priority you want the Animation to have in the 3 dot menu.


:orange_book: | Chapter 2: Preparing Tool for Tool 6D

Now that you have all your Animations prepared (Idle animation, and any other animation as needed), you’ll need to setup the Tool for usage.

Before we begin, I should remind you that some scripting experience is greatly recommended. Tool 6D doesn’t have Animation Loading/Playing functionality, as all it does is add support for playing Tool based animations. You can refer to the below attached Sword model if you need a basic Animation Loading/Playing script. With that out of the way, let’s begin!


:link: | Sword Model: GET IT HERE!


:warning: It’s very important that when you create your Tool, that you toggle off RequiresHandle. You’ll never need it on if you’re using Motor6Ds. You also will not be able to use the name Handle anymore as the name seems to mess with Tools when RequiresHandle is off. Try picking a different name that accurately represents what your Tool is, and go with that instead.

If you require assistance with this step, please refer to the below video:

Once you have Animation Loading/Playing all figured out, you can move on to the next chapter. If you already had all of that configured, you can just ignore this chapter and move onto the next one.


:green_book: | Chapter 3: Setting up Tool 6D

Now it’s time to actually give your Tool Motor6D support!

First, you’ll need to obtain a copy of Tool 6D. Luckily for you, I have conveniently attached the model here for you to obtain it from.


:link: | Tool 6D: GET IT HERE!


Now that you have the model, go ahead and insert it into your game. Once you get the model, you can find it under your Models in the Toolbox.

Once inserted, drop all contents within the folders into their respective services. For example, if it says “ReplicatedStorage” on the Folder, you’d drag the Remotes folder directly into the ReplicatedStorage service.

image

Once everything has been put in it’s proper locations, you’ll need to focus your attention onto your Tool you have most likely sitting in the StarterPack of your place file.

We’ll need to create a configuration called 6D_Config and parent it to the Tool. Simply click on the + button next to your Tools name in the Explorer, and type “Configuration”, hitting enter when you see the option popup in the list:

image

Then, change the name in the Properties panel to the name 6D_Config exactly as written here:

:warning: If you do not create the 6D_Config, Tool 6D will treat the Tool as normal, and will not affect it in any way. If you don’t want a Tool to be affected by Tool 6D, simply do not create the Configuration!

Next, you’ll want to create another Configuration, and place that inside the 6D_Config we just created. The reason we need to do this is because the Tool 6D system you just installed into your place will detect any Equipped tool, and check for this Configuration to know how to setup Motors.

You can give the Motor Configurations under 6D_Config any name you’d like to help you differentiate between connected Motor6Ds. The only name that cannot change is the 6D_Config, so keep that in mind! If you need help on this step reference the below ordered images:

image

At this point, your setup should appear exactly like this, except with a different name for the Motor Configuration you created:

image

Now, click on the Motor Configuration you created. In my case, it’s called “Any Name Works!”

image

Next, in order to get things working, we’ll need to create 4 Attributes that Tool 6D will use when creating Motor6Ds. Simply click on the + button beside the “Attributes” section of the Properties panel, and follow the below order:

image

image

image

image

image

After all that, your setup should currently look like this:

You can now edit these 4 new attributes to your liking. Back in Chapter 1, you need to set the Part0 and Part1 values on the Motor Configuration to the exact same values you used in the Animation phase. For me, Part0 was Right Arm and Part1 was Sword.

:warning: If you edited the C0 and/or C1 values on the Motor6D when you made the original Animations, you’ll need to set the C0_Offset and C1_Offset attributes to the same values on the Motor Configuration. The reason this is important is because when you load & play the animation, the Tool Grip might appear slanted or messed up.

:warning: If you need more than one Motor6D for your Tool (If you’re animating more than just a single part), create a duplicate of the Motor Configuration and edit the Attributes to match the Body_Part / Tool_Part so that the new Motor6D can connect. You don’t need to create unique names, but I’d recommend it! Also, you can attach multiple Motor6Ds to the same Parts, so don’t worry about that!


:books: | Epilogue (p.1): Testing the Setup

Here comes the fun part! Finally! You can now take a break, and look at the Animation you worked hard on earlier, with this very simplistic change! (not technically of course)

:camera_flash: | Video:


:books: | Epilogue (p.2): Conclusion

That concludes this tutorial pretty much. I hope you make great things with this, and once you keep doing this, it’ll basically become second nature to your skillset!

Is something not making sense to you? Do you need additional support?

Please contact me through my Developer Forum profile if you need help with anything listed here. It may help a bit more if you tell me which Chapter you’re confused on, that way I can go over that segment with you.

Please also keep in mind that this post is brand new, and just like the old post, I likely forgot to include an important step, or mention something. Writing all these words have probably driven me mad (not really, but it’s a lot), so go easy on me!

Keep an eye on the Console inside studio!

Is something not working right? Do you feel like you followed the tutorial to the core but it’s just not working? Please take a look at the Studio console (or in-game console) to figure out if there are any errors, or likewise.

What are the limitations of Tool 6D?

Well, this script was made for people who wish to use melees which happen to possibly involve usage of other separate handles and body parts. It was never thought to be useful with guns, as that was out of the scope of this in resource, at least in my eyes, and for old times sake.

Animating guns with moving parts may not be possible, however you can animate the guns grip with this. I haven’t tested with making a gun, so if it works out, be sure to share how you did it!

If you happen to find other things this doesn’t work with, be sure to let me know here, and I’ll edit this post after testing your findings.


(p.s) Thanks to all those in the past that helped me accomplish my goals, and helped me with finding out what older versions of this resource wasn’t capable of, including supporting me up until this point. I wouldn’t have gone through the trouble of putting all this together with my very small brain.

Know you matter, and that’s all for me :smile:
Have a great day/night, and until next time!

54 Likes

Love it!

  • You’ll need to make an Idle animation for your Tool, or else the Handle will return to the default Motor6D position (refer to the previous image of my Dummy being impaled by a sword in his arm)

Just wanted to mention that you don’t necessarily need to make an idle animation for the tools, as doing Motor_6D.C0 = CFrame.new(Vector3.new(0, -1, -1.4)) * CFrame.Angles(0, math.rad(180), math.rad(90)), right after you instance the Motor6D should set the tool’s CFrame to the original CFrame.

(Additionally you could do Motor_6D.C0 = Tool.Grip instead, if the tool already has a custom grip.)

3 Likes

Animating idle animations are technically more practical in this case. If someone would like to do that mechanically wise I suppose they could add it into the script, though I find it to be better to just animate it, it’s a lot more visual, and easier to grasp. Most people aren’t programmers.

I appreciate the feedback. I’ll consider adding it after some testing, and if I think it really matters.

2 Likes

Yeah, I do agree that your method would be better for cleanliness and is much easier to understand, CFrames get very complicated, very fast.
Also, after a bit of tinkering, I’ve found a better method as the one I suggested is occasionally inaccurate.

		local Motor_6D = Instance.new("Motor6D")
		Motor_6D.Name = "Link_"..Index
		Motor_6D.Parent = script:WaitForChild("Motors")	

		local Right_Hand: BasePart = Character:FindFirstChild("Right Arm") or Character:FindFirstChild("RightHand")
		Motor_6D.C1 = Tool.Grip * CFrame.Angles(math.rad(90), 0, 0)
		Motor_6D.C0 = Right_Hand.RightGripAttachment.CFrame -- likely different instance names for R15
2 Likes

This is great! I can’t wait to see what people do with this resource.

^^^^ As for this, I feel like Headstackk’s tool animation tutorial would pair perfectly with the one you’ve made! Here’s a link to Headstackk’s tutorial: How to animate Tool Parts (Guns, Knifes etc.)

Though I haven’t tested Headstackk’s tutorial with this one, I still believe it would work, someone feel free to correct me if it doesn’t

good jobđź‘Ť

I was aware of Headstackk’s tutorial (even referenced it in the old post!), however his has the usage of RemoteEvents, which had security flaws. The only difference with this resource is that it’s all server based, with no contact to the client.

His tutorial works, but if people are keen on server security (or just not wanting to utilize motors with local scripts) this is the resource for them.

Thank you for the response!

p.s I haven’t tested this with guns, thats up for the people to experiment! If someone may find a usage for it, or a lot of people request it, I’ll try my best to allow this to be more generically friendly.

2 Likes

Dear @Vyntrick,

I am writing to report an issue with your Tool 6D Script. I have noticed that the tool handle is getting bugged and not working as expected. When I try to use the Tool 6D script it turns the handle in a weird position. I have tried various troubleshooting methods but the issue persists.

I would appreciate it if you could look into this issue and provide a fix as soon as possible. If you require any further information or details about the bug, please let me know and I will be happy to provide them.

Thank you for your attention to this matter.

Sincerely,
InfinityFruits

2 Likes

Question: How is this useful is this is so easy to implement?

I believe it’s useful because Roblox does not provide any native support for animating tool handles without having to use a script. I wrote this so if people have more than 1 part to a tool that needs to be welded to other parts of the body, this would help. I suggest reading over the post to learn how this would be useful.

You might have missed a crucial bit of the tutorial!

I completely understand because I did write quite the bit of content on the post. Here is a quick quote back to one of the issues you’re experiencing:

You can do this pretty easily by animating just the handle part to fake what a normal tool would look like. This solution was provided by another kind developer forum member who contributed to this post on the previous thread.

You can find that here:

Alternatively you could program the grip as suggested by @ej0w here, however I cannot guarantee the compatibility of this method, and animations I find work best for this.

Please do let me know of any other issues by private messaging me. I’d like to keep the post clear with bug reports instead of problem reports.

Have a good one!

1 Like

I dont like this tutorial, Heres why, This tutorial makes people hold animatable tools deppending on the holding/idle anim for it which is just yucky for some cases.

Lets say you have a weapon system and this weapon system can be customized to have different stats and weapon models, Now lets say you wanna play a deffault stagger animation for the player, so you stop the idle anim and play the stagger one and uh oh it seems your tool just clipped into the character’s hand since it’s deffault holding position is like that and you need to always play an anim to hold it the way you want it to look.

Yes im aware you can animate the tool on the stagger animation but guess what, now you need to do a stagger anim for every single weapon model as they all have different dimmentions and ways to be held so you have to make those.

So just use an attachment when you wanna define the poition in the hand for the model and then you weld it with the motor6D that way even if no animation affecting the model’s handle motor6D, the model wont go in a yucky way.

1 Like

You have the right to hold this opinion! This niche case is considered out of the scope when I wrote this.

Most people from what I’ve seen have used this for combos (click sequenced animations that change depending on number of clicks) and it has worked for a lot of peoples general use cases.

If you’re making a more advanced system where animations can be changed via a menu, or depend on some form of statistical information, you’ll definitely encounter issues.

This tutorial was written for complete noobs, just like the first one. I simply wanted to provide a little more functionality, and I had no intent on making this the best thing in the world.

You can feel free to fork the script and edit it to your desired outcome, but I likely won’t consider changing it myself because I want this to be beginner friendly.

If you’d like to manually set grips, I suggest referring to @ej0w message, with his script here that I mentioned in my previous reply.

2 Likes

Also sorry if I sounded rude by the way, that was not my intention i just wanted to point out that this method could be improved using attachments.

1 Like

Thank you so much! After looking for a solution for the same problem a second time for a different game I’ve now actually fixed the problem. My problem was, that I forgot to create Motor 6D in the Rig. Thank you so much you helped us out really good, bump as well!

1 Like

originally i had that tool being impaled in my arm bug, i used that fix that ej0w made and the idle animation works, but the weapons not animating properly during the attack animation

The animations all look fine in the editor.
An idle animation exists and plays in a loop when equipped.
but the tool is facing the wrong way

also if it gives anything, it’s a bow, the bow’s string is moving in the right way respective to the bow, but the bow is not facing the right way or in the right spot

I have been searching in other topics of Motor6D problems, found like 3 other people having the same problem with no replies on their topics.
So here I come, and I can say this here because the problem does not change when i use Tool6D method and script instead of others, it remains.

This is a common issue when using animated Tools. Your issue is likely that you animated with the Motor6D on a rig that had the C0 set with a specific value. Try to make sure the Dummy is animated with either no C0 offset on the Motor6D, or ensure that the Motor6D you’re using on your tool has the offset used.

This resource doesn’t currently have support to put the offset in the configuration, but this has been considered as of recently, due to internal discoveries.

2 Likes

have you tried the action 4 in priority?

I have a sword that floats next to the hand, but its constantly welded to the hand due to Handle. Will this tutorial help in this case? Also, can you repost the example video, I can see it for some reason

The only reason that happens is because anything attached to the handle will pivot around it as that’s the connection between the body part and the tool part.

The only way to have something not following the arms movement, is to set the Body_Part to Torso if you’re using R6. For R15, you’d pick either LowerTorso, or UpperTorso depending on your case for R15.

As for the videos, they’re working fine on my side. Have you tried clearing your browsers cache and reloading the page?

1 Like