I made a plugin some time ago that converted KeyframeSequences to CFrame animations for personal use. I said to myself why not make it public so I made a poll and more people said they wanted to use it than not use it. I made it way more user friendly, added R15, and am releasing it now.
First you have to make a KeyframeSequence (it’s basically an animation), then open the plugin and select that KeyframeSequence. After you select the KeyframeSequence, click the button that says convert and a script will be made in the Server Storage, with the same name as the KeyframeSequence. That script is the CFrame animation. Copy paste everything in the script into a function on another script, call the function with the argument as a character and it will play just like an animation. To stop the animation you will have to create a BoolValue in the HumanoidRootPart, and it must be set to true before playing the animation. Just set the BoolValue to false and the animation will stop.
You might be asking, why use it? The benefits are that CFrame animation are harder to steal (if they are in a Server Script in ServerScriptService that is), you can send other people the animation and they can use it, and CFrame animations instantly load. The only problem with CFrame animations was that they were tedious and hard, and this plugin solves a part of this issue.
Even though this plugin makes the CFrame animations, it doesn’t do everything for you. If you want to recreate every animation into CFrame (which you would probably have to do, due to how CFrame animations work), you would need to code everything to work whenever it needs to work. This plugin basically just gets rid of part of the problem of CFrame animations, not the whole problem.
The plugin currently has a feature that moves the HumanoidRootPart with the Torso (meaning that if the torso moves to a place the HumanoidRootPart is also moved to that place). It also has a feature where the first time the first Keyframe is played, it will take half the amount of time for it to end which I can’t fully explain. Both those features can be disabled and the half amount of time for first Keyframe only works on KeyframeSequences that have looped set to true.
Everything has been tested and works for R6 but I haven’t tested much for R15, and when I tested R15 the animation, it was just one Keyframe so if you find any bugs please let me know. There is a little bit more info in the plugin itself if you go to Instructions/Extras. If you are using a custom R6 rig, enable R15. If R15 is enabled then the character that contains the KeyframeSequence must be in an idle stance when you convert the animation. If the animation has 1 frame gaps and is 60fps and put in a server script it might lag.
Here’s the plugin:
Please ask if you have any questions, report any bugs, and suggest if you have a suggestion.