Animator plus | Custom, optimized animator

Animator plus

Disclaimer: Do not create materials prohibited by the roblox rules, use this module only for its intended purpose

Install

How to install?

from roblox:
Animation+ - Creator Store
Or from file:
AnimationPlus.rbxm (8.9 KB)

Introduction:

You know, it always bothered me that my friends don’t see animation in Roblox studio. I had to update the game, log in to it, it took quite a lot of my time. It was a hindrance that every time the animation worked, it had to be updated.
Of course, this is not the only thing implemented in the module

Why is my module?

    1. Open source - At the moment, there are 3 types of animation playback in the module: C0,Transform,Combined, as well as an automatic type that selects the most appropriate type of animation playback. You can specify them, or you can not specify them. This means that with a proper understanding of programming, you can write your own types. For example, “sharp-style”, “old-stule”, and so on.
    1. The co-authors will also see this animation in the studio, which is great because now you don’t have to publish the game just so your friend can see the animation
    1. Complete typing and correct typing hierarchy (hints). There is no typing in most modules. This has a subtle effect on performance, as well as removes hints. So even a beginner in programming will figure out how to use this module.
    1. “just work models”. The authors of other open source works do not need to write a tedious “Read me” in which they prescribe to a beginner exactly how to publish animations so that everything works.
    1. The ability to play animations outside the game (u can make plugins etc)
      There are still a bunch of different advantages
API
  • Get Started
local AnimationModule = require( game.ReplicatedStorage.Animator ) -- Set your path
local Animator = AnimationModule.new(game.Workspace:WaitForChild("Rig").Humanoid) -- Your rig (you can also use the player)
local AnimationTrack = Animator:LoadAnimation(game.ReplicatedStorage.Animations.RigAnim) -- Path to KeyFrameSequence
  • Methods

How to get animator?
Module.new: (humanoid: Humanoid) -> Animator

-- AnimationTrack
	Play: (self:AnimationTrack, fadeTime:number?, weight:number?, speed:number?) -> ();
	Stop: (self:AnimationTrack, fadeTime:number?) -> ();
	AdjustSpeed: (self:AnimationTrack,speed:number?) -> ();
	AdjustWeight: (self:AnimationTrack,weight:number?,fadeTime:number?) -> ();
	GetMarkerReachedSignal: (self:AnimationTrack, name:string) -> RBXScriptSignal;
-- Animator
	LoadAnimation: (self:Animator,keyframeSequence: KeyframeSequence) -> AnimationTrack;
	GetPlayingAnimationTracks: (self:Animator) -> {any};
	Destroy: (self:Animator) -> ();
  • Properties
--type AnimationTrack
	Name: string?;
	Speed: number?;
	Weight: number?;
	Length: number?;
	IsPlaying: BoolValue;
	Looped: BoolValue;
	Priority: any?;

--type Animator

    Animator.AnimationMode = ... ::number
    Animator.AnimationMode = 0 -- AutoType
    Animator.AnimationMode = 1 --[[Is "Transform mode - Modifies the entire CFrame of the joint(position and rotation) using joint.joint.Transform"]]
    Animator.AnimationMode = 2 --[[Is "C0 mode" - Modifies only the rotation of the joint using joint.joint.C0]]
    Animator.AnimationMode = 3 --[[Is new and best "Combined mode - Uses joint.joint.Transform for joints where the CFrame has changed,and joint.joint.C0 for all others."]]

  • Signals
	DidLoop: RBXScriptSignal;
	Ended: RBXScriptSignal;
	Stopped: RBXScriptSignal;
	KeyframeReached: RBXScriptSignal; -- Dereplicated!!! (but still working)

Credits

me
Ceat_ceat - Honestly, I do not know who it is, but this guy is very cool. He wrote the first version of this module, and I came and wrote my own based on it. I couldn’t help but point out this person here

Update

V2.2

Fixed some errors with MarkerReachedSignal. Now it returns Marker value
Added Animator:GetPlayingAnimationTracks() function

Polls

Would you use this over the default animator? Why or why not?

  • Yes
  • No

0 voters

Write what you think about this module, why you put 1 or 5 td tp. I also welcome any criticism

Rate!

  • 1
  • 2
  • 3
  • 4
  • 5

0 voters

Thank you for taking the time to read it. Please write a comment, what do you think about this work. thats all

17 Likes

Could you showcase a video of this resource? I’m very confused on what this is currently.

1 Like

4 Likes

It just plays your animation? How is your module more optimized than the ordinary way of playing animations? Or does your module add something new?

2 Likes

If you are going to make it exactly like the Animator object can’t you just do typeof(Instance.new(“Animator”))

You play animations from KeyframeSequences

2 Likes

Dude, I don’t think you read the post. Here

How is it optimized? I think I can’t say that. Roblox does not show the source code of its works.

I didn’t understand you a bit. Do you mean to create an “object” that can be found in the explorer? This is impossible

You can do : Animator instead of : typeof(Instance.new("Animator")).

I read the whole post, but I couldn’t understand it because of the broken english.

Language barrier

I only know English!

2 Likes

aa okey. I’m not English either.

1 Like

hi guy i was alerted of this modules appearance
i mark a large majority of my public stuff with my name at the top of the script so i think it would be nice if my name was also in the code somewhere, you should put your name there and a link to your post too

ALSO: i saw your fix for CubicV2 in your version of the easing module and it uses cubic easing if it reaches CubicV2. that’s not enough because on regular Cubic, In and Out easing directions are reversed, my newer version adds in CubicV2 and fixes Cubic to be incorrectly reversed to be consistent with roblox. please check out my fix in the easing module here

thx 4 reading

3 Likes

Right now I rewrote part of the code and specified the credits

have you updated the one uploaded to the creator store? also you messed up ur formatting on the post lol

1 Like

Yesss!!! We needed this for like the whole 19 years!! The issue of developing a game with someone is that only person (the animator) can see animations in studio which creates a lot of mess with testing and getting feedback from your team. Also, this removes issues of slow moderation and stuff like that.

Also, as i remember, roblox’s default API doesn’t have anything like Track:Pause() and Track:Resume(). You could add it. In addition, if you don’t have it, i recommend you to add animation-blending like roblox has. For example, if i have 2 walk animations playing at the same time, where one has weight 10 and other — 5, then all the keyframes will be closer to the one with weight 10. This is useful feature actually that allows you to combine animations and not make any new for specific situations (like attacking and walking at the same time).

By the way, if you’ll add animation blending system (and i hope you will), PLEASE, make a option to adjust weight of every single keyframe separately. Roblox doesn’t have this option and provides you weight of the whole animation instead, and that’s not good.

Altho, this plugin must be really useful. In addition, unlike roblox animation player, it can (at least i guess it can) play animations outside of playtest, so you, for example, can check an attack visuals quickly without launching playtest. Really good.

P. S. : не ожидал на девфоруме увидеть русского, лол

1 Like

А как ты понял что я Русский ало
mixing animations works, but only on a specific animation mode

2 Likes

У тебя в конце в обс студио (или чо это) был русский интерфейс, такчто сложить два и два несложно

2 Likes

I read the post and still don’t understand how this is optimized and better.

1 Like

Unlike roblox’s default animator:

  1. This one allows other people to see your animations and studio
  2. You don’t need to preload animations (roblox’s animations will lag if they are not preloaded)
  3. This animator allows you to play animations outside of a playtest, so you can use this API for making a plugin, for example

There are a little more nice features with that, but i don’t thing they are important to you

3 Likes

So you have an animation-blending system already, right? And it allows to adjust weight of separate keyframes?

1 Like

Yes, you should probably use the C0 type. try to put an animation on the player (using the C0 type) and be like at this moment. You will see that the animations have crossed