[v1.2.1.1] BetterAnimate (R15, R6, Skinned & Custom Rig Support)

Global update v1.2 is out!

Everything is changed. I hope you like update, as I tried to make everything more optimized and improved.

Also, if you have ideas on how to improve BetterAnimate, lmk in private messages

2 Likes

This resource has been VASTLY improved however, this should be considered for the default animate script…

I like your usage of Trove, the modularity you’ve crafted and the customization…
Thank you! This script is such a big improvement.

inverse walk doesn’t work with inverse=true (im using r15 character)

Hello, you need to use Enabled_Inverse not Inverse

Here’s the code how it should look like:

local BetterAnimate = require(PATH_TO_MODULE)
local MyAnimator = BetterAnimate.New(Character, {
	Enabled_Inverse = true,
})

MyAnimator:Start()
1 Like

Hello, thank you :grinning:.

Im working on 1.2.1 that will add even more features (Signals and Loading avatar animations)

Update 1.2.1


Added 4 Signals
local BetterAniamte = require(PATH_TO_MODULE)
local MyAnimator = BetterAnimate.New(Character)

 -- Fires on new state (Running, Falling, etc...)
MyAnimator.Signal_NewState:Connect(function(State: string) end)

-- Fires on new animation (Except tool animation)
MyAnimator.Signal_NewAnimation:Connect(function(AnimationClass: string, AnimationName: string, AnimationTable) end)

-- Fires on new **(String not Vector3)** moving direction
MyAnimator.Signal_NewDirection:Connect(function(Direction: string, Vector3_Direction: Vector3) end)

-- Fires on animation keyframe reached (Including tool animation)
MyAnimator.Signal_KeyframeReached:Connect(function(Keyframe: string) end)

Added function to get player avatar animation
local LocalPlayer = game:GetService("Players").LocalPlayer
local BetterAnimate = require(PATH_TO_MODULE)
local AvatarAnimations = BetterAnimate.GetAvatarAnimationsByUserID(LocalPlayer.UserId)
local MyAnimator = BetterAnimate.New(Character)
MyAnimator:UpdateAnimations(AvatarAnimations, true)

–Code improvements

man, you had blocked the permision.

Sorry about that, uploaded module to GitHub
GitHub Link

1 Like

Thanks! I thought this message won’t reply.

@NOTEKAMI does this work with skinned mesh characters

Custom/skinned avatar is supported

Tested rig with 3 animations: Idle, Walk and Run

@HunterJacksonCarr

@NOTEKAMI ill use betterAnimate if you ever add 8way movement

You should be using it now! This is much better then the default animate script + it has important features that can be utilized to make your development experience easier.

And it is a better end product in general.

But I do get the appeal of a 8 directional movement system.

Update 1.2.1.1


New type: Instances (for Trove)

New settings:
Time_DefaultAnimationTransition for AnimationTrack:Play()
Enabled_ClimbFix – fix for R6 and R15


Code improvement


@HunterJacksonCarr Here is example how you can do that with BetterAnimate

Showcase: https://youtu.be/2v6d84cjyLs

local Instance_BetterAnimate = game:GetService("ReplicatedStorage").BetterAnimate
local BetterAnimate = require(Instance_BetterAnimate)
local Utils = require(Instance_BetterAnimate.Utils)
local Types = require(Instance_BetterAnimate.Types)
local Character: Model = script.Parent
--local PlayEmote = script:WaitForChild("PlayEmote") :: BindableFunction

local Presets = {
	ForwardRight = {
		Run = { {ID = 10404627994} },
		Walk = { {ID = 10404404615} },
	},

	ForwardLeft = {
		Run = { {ID = 10404604071} },
		Walk = { {ID = 10404377900} },
	},

	Forward = {
		Run = { {ID = 10899968825} },
		Walk = { {ID = 10921541949} },
	},

	Backward = {
		Run = { {ID = 10358526981} },
		Walk = { {ID = 10358505520} },
	},

	BackwardRight = {
		Run = { {ID = 10847291554} },
		Walk = { {ID = 10847107747} },
	},

	BackwardLeft = {
		Run = { {ID = 10847298457} },
		Walk = { {ID = 10847061332} },
	},

	Right = {
		Run = { {ID = 10404627994} },
		Walk = { {ID = 10404404615} },
	},

	Left = {
		Run = { {ID = 10404604071} },
		Walk = { {ID = 10404377900} },
	},
}

local MyAnimator: Types.BetterAnimate = BetterAnimate.New(Character, {

	Enabled_Signal_NewDirection = true,
	--Enabled_Inverse = true,
	--Enabled_Emotes = true,
	--Bindable_PlayEmote = PlayEmote,
})

MyAnimator.Trove_BetterAnimate:Connect(MyAnimator.Signal_NewDirection, function(Direction: Types.Directions)
	
	local FoundAnims = Presets[Direction]
	if FoundAnims then
		MyAnimator:UpdateAnimations(FoundAnims, true)
	else
		MyAnimator:UpdateAnimations(Presets.Forward, true)
	end
end)

MyAnimator:Start()
2 Likes

thank you i may use better animate

“Bug” report.
The “ServerSide” Script under the “GetAvatarAnimationsByUserID” Module needs to be ran with legacy instead of server to prevent this:

“ServerSide”:
image

How to turn it into legacy:
image

Besides that, amazing amazing amazing work.

I have one suggestion (for the people that want it). Include a built in 8 directional movement system.
Ex:

3 Likes

You shouldn’t put BetterAnimate in StarterCharacterScripts. I changed the RunContext so that the script would work from ReplicatedStorage. : p


About the built-in 8-direction so far I have no idea how to implement this, since there will be a conflict with other BetterAnimate settings
2 Likes

Ah, I see. Please include this detail in some sort of “READ_ME” So people arent mislead or make a mistake. Thank you!

Is there a Documentation showing what is possible and what not? or how to properly adjust some settings?