Help me with strange behavior of Animation track

Somehow, when I play the animation, it doesn’t look the same as in the editor; it behaves differently.

I tried playing the animation on the client and server, but the error persists. There’s no other animation running alongside it, just an idle one, but that doesn’t affect it. I’ve tried without it, and it behaves the same way.


I would say to disable the animation weighted blend fix, but they disabled that. It’s been two years.

Anyways, have you changed the priority of the animation? It shouldn’t matter in this case, but just testing it can help.

Also, what is the animation weight that you are applying when you play it?

I’ve already changed the priority, and the error still persists, about the weight I didn’t change it, I just used the default :play(), do you think that could be it?

I would recommend changing the weight when you use Play. Try increasing it to 100.

Could you please provide the codes?

step.Hammer_Anim:Play(0,100,1)

he’s still acting weird

local module = {}

local ids = {
	IdleLoop = "rbxassetid://95141387481787",
	HammerSlam = "rbxassetid://132459484858789",

	IdleLoopColui = "rbxassetid://95773060754511",
	InitColui = "rbxassetid://104889654274600",
	HammerSlamColui = "rbxassetid://89102035506225",
}

local rigs = {
	Eternity_Devs = script.Parent.Parent.Eternity_Devs_rig,
	vitorpvp1337 = script.Parent.Parent.vitorpvp1337_rig,
	NominoDev = script.Parent.Parent.NominoDev_rig,
	MoonGibbo_Dev = script.Parent.Parent.MoonGibbo_Dev_rig,
	WillyFromBelair = script.Parent.Parent.WillyFromBelair_rig,
	sir_aureus = script.Parent.Parent.sir_aureus_rig,
	collll = script.Parent.Parent.collll_rig
}

function loadAnim(animator:Animator, id:string|number, name:string, looped:boolean, priority:Enum.AnimationPriority):AnimationTrack
	local anim = Instance.new("Animation")
	anim.Name = name
	anim.AnimationId = id

	local track = animator:LoadAnimation(anim)
	track.Looped = looped
	track.Priority = priority
	return track
end

local rigSteps = {
	{
		NowRig = rigs.Eternity_Devs,
		NextRig = rigs.vitorpvp1337,

		Idle = loadAnim(rigs.Eternity_Devs:FindFirstChild("Animator",true),ids.IdleLoop,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.Eternity_Devs:FindFirstChild("Animator",true),ids.HammerSlam,"Hammer",false,Enum.AnimationPriority.Action),
	},

	{
		NowRig = rigs.vitorpvp1337,
		NextRig = rigs.NominoDev,

		Idle = loadAnim(rigs.vitorpvp1337:FindFirstChild("Animator",true),ids.IdleLoop,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.vitorpvp1337:FindFirstChild("Animator",true),ids.HammerSlam,"Hammer",false,Enum.AnimationPriority.Action),
	},

	{
		NowRig = rigs.NominoDev,
		NextRig = rigs.MoonGibbo_Dev,

		Idle = loadAnim(rigs.NominoDev:FindFirstChild("Animator",true),ids.IdleLoop,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.NominoDev:FindFirstChild("Animator",true),ids.HammerSlam,"Hammer",false,Enum.AnimationPriority.Action),
	},

	{
		NowRig = rigs.MoonGibbo_Dev,
		NextRig = rigs.WillyFromBelair,

		Idle = loadAnim(rigs.MoonGibbo_Dev:FindFirstChild("Animator",true),ids.IdleLoop,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.MoonGibbo_Dev:FindFirstChild("Animator",true),ids.HammerSlam,"Hammer",false,Enum.AnimationPriority.Action),
	},

	{
		NowRig = rigs.WillyFromBelair,
		NextRig = rigs.sir_aureus,

		Idle = loadAnim(rigs.WillyFromBelair:FindFirstChild("Animator",true),ids.IdleLoop,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.WillyFromBelair:FindFirstChild("Animator",true),ids.HammerSlam,"Hammer",false,Enum.AnimationPriority.Action),
	},

	{
		NowRig = rigs.sir_aureus,
		NextRig = rigs.collll,

		Idle = loadAnim(rigs.sir_aureus:FindFirstChild("Animator",true),ids.IdleLoop,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.sir_aureus:FindFirstChild("Animator",true),ids.HammerSlam,"Hammer",false,Enum.AnimationPriority.Action),
	},

	{
		NowRig = rigs.collll,
		NextRig = nil,

		InitClap = loadAnim(rigs.collll:FindFirstChild("Animator",true),ids.InitColui,"Idle",false,Enum.AnimationPriority.Core),
		Idle = loadAnim(rigs.collll:FindFirstChild("Animator",true),ids.IdleLoopColui,"Idle",true,Enum.AnimationPriority.Core),
		Hammer_Anim = loadAnim(rigs.collll:FindFirstChild("Animator",true),ids.HammerSlamColui,"Hammer",false,Enum.AnimationPriority.Action),
	},
}


return {rigSteps = rigSteps, Anims_Ids = ids}

local function doStep(step:steptype)
	if step.Idle.IsPlaying then
	--	step.Idle.DidLoop:Wait()
	end
	step.Hammer_Anim:Play()
	--step.Idle:Stop()
	
	local HammerModel = step.NowRig:FindFirstChild("Hammer")
	
	step.Hammer_Anim:GetMarkerReachedSignal("ReceiveHammer"):Once(function()
		task.spawn(MakeModelVisible, HammerModel, true)
	end)
	
	step.Hammer_Anim:GetMarkerReachedSignal("SendHammer"):Once(function()
		task.spawn(MakeModelVisible, HammerModel, false)
		
		local nextStep = nil
		
		for _, steptab in ipairs(rigSteps) do
			if steptab.NowRig == step.NextRig then
				nextStep = steptab
				break
			end
		end

		if nextStep then
			task.spawn(doStep, nextStep)
		end
	end)
	step.Hammer_Anim.Stopped:Once(function()
		--step.Idle:Play(0)
	end)
end

Before playing an animation, try stopping any currently playing animations on the character, giving it a little delay, and then playing the animation with 100 weight.

Example codes:

for _, animation in ipairs(NowRig.Humanoid.Animator:GetPlayingAnimationTracks()) do
	animation:Stop()
end
task.wait() -- Give it a little delay
step.Hammer_Anim:Play()
step.Hammer_Anim:AdjustWeight(100)

still persists

I didn’t have any other animation, I just used Hammer_Anim

The character seems to be tilted slightly. Could this be a character position issue rather than an animation issue? If not, try running the animation independently from the command prompt, rather than from the script.

the HumanoidRootPart is anchored and is not moved by anything, all movement is only in the Animation

even running it with the command it looks strange

I’ve had similar problems when I used the default roblox animator too: the preview and the actual animation was different. A solution for me - which might not be available for you - is to export the animation from roblox’s animator and then import it into MoonAnimator. The animation looks the same in the preview but when exporting from Moon, the animation will look the same in game as in the preview. I don’t know why this method would work but maybe it can be achieved via roblox’s animator too.



Comparing the two screenshots, there’s a clear difference in height between the two characters. If the character’s base position isn’t that important, I think it would be better to raise the character a bit higher than the base. Alternatively, consider whether the animation ID is the pre-update animation ID.

this happened because they are in different frames, the HumanoidRootPart is not changed at any time

How can I convert to Moon? I do this and it doesn’t load in “Rig Animations”

Export the animation from roblox’s. Once done, open Moon. On the right side of its ui, go to rig animations → roblox… and import your animation from there.
Once imported, go to file → export rigs, then save that animTrack to roblox.


I don’t think I know how to use it, it doesn’t appear

Then do this:
Open moon → New rig animation (bottom one)
Animator editor opens. File → Import → Roblox → select the anim

If so, it seems like there’s a problem with publishing the animation. Could you try changing all the keyframe easing styles to the default(Linear) and publishing?