How about your script?
Are you loading the animation each time it plays, or at the beginning of the script and then just playing it when it needs to?
Also what is the frame rate when you play the game? You can set the animation at 60 fps, but if you play and only get 40 fps then there will be an issue.
The animations get loaded when the axe gets equipped like this:
self:LoadAnimations()
self:PlayAnimation("Hold")
function Axe:LoadAnimations()
local Character = self.Instance.Parent
local Humanoid = Character:FindFirstChild("Humanoid")
if not (Humanoid) then return end
table.clear(self.Animations)
for _, AnimationInstance in pairs(ReplicatedStorage.Config.Tools.Axe.Animations:GetChildren()) do
self.Animations[AnimationInstance.Name] = Humanoid:LoadAnimation(AnimationInstance)
end
end
function Axe:PlayAnimation(AnimationName)
local Animation = self:GetAnimation(AnimationName)
if not (Animation) then return end
Animation:Play()
table.insert(self.PlayingAnimations, Animation)
return Animation
end
Also, might I suggest using AnimationController:LoadAnimation() instead of Humanoid:LoadAnimaton()? It’ kinda janky sometimes and i don’t really know why, but animation controllers are better apparently.
No, don’t use animator! use animationcontrollers! Also, you may have inserted your animation instance Id’s or animation names wrong and played two of the same animations at the same time.