Animation Priority Not Working

On a character, I set the priority of a custom animation to the lowest priority (core), and play the animation as follows:

animationTrack.Priority = Enum.AnimationPriority.Core
animationTrack:Play()

So what I expect to happen is if I move my character with WASD that it will interrupt this animation and show the walking animation (since the movement animation has a higher priority).

  1. When I test the game in Studio using Play, then this is exactly what happens. When I move my character, the custom animation is replaced by the walking animation.

  2. Yet, when I test this using Test: Start (or if I test it in a live game), then my custom animation keeps playing and is not interrupted by the walking animation.

So this looks like a bug. It is easy to replicate by loading an animation using the code above, and then moving your character with WASD.

2 Likes

You need to provide a repro file. Include a keyframesequence so people can test the specific animation you’re testing.

1 Like

Having a similar problem in an old project—a highest-priority (action) animation won’t play on characters with equipped tools.

1 Like

Animation Bug Repro.rbxl (15.9 KB)

Attached is the Repo. Note that this is an R15 animation, so you need to test this in an R15 game. If you have an existing R15 game, then just copy the circled files to your game. Then go to the Test Tab, press Test with a single player. Equip the tool, and press once to start the animation. Then move via WASD, and you will see the animation continues, even though it has a lower priority than the movement.

Screenshot

1 Like

Why are you trying to animate your local player using the server? AnimationTracks for your LocalPlayer should be handled by LocalScripts. The only time you should really ever use animations on the server is for NPCs / non-player objects.

Here’s an example of how to use animations:
http://wiki.roblox.com/index.php?title=Animations#Example

Note that this example calls LoadAnimation each time an animation is played. You should instead store your animation tracks in a variable because they can be re-used (played multiple times) until the humanoid dies.

1 Like

Thanks for the reply. It was done on the server mainly as a security issue to restrict access to the animation. I will have to see if I can do this via a local script instead.

But even if it is done on the server, shouldn’t the priority still be properly handled by your system?

1 Like

The client will still have control over their player, changing who plays the animation doesn’t add any additional security.

I’m not quite sure why playing animations from the server on a player character does not work. There’s probably a reason but I’ve never looked into it. But the main reason you want animations played locally is responsiveness. It’s important in games to have your own character feel smooth. So if every action has to go to the server and back, it will feel extremely slow (a delay between input and action)

1 Like

Okay, I switched everything to a localscript, and the movement now overrides the custom animation if I set the animation priority to Core. However, if I set the priority of the animation to Idle, then the movement does not override the animation as it is suppose to.

Attached is a new repo file. Note this only works for an R15 character.

Anim Priority Bug.rbxl (14.9 KB)

Just hit play, equip the tool, activate it to start the animation. Then use WASD to move. Note that the movement or jumping does not override the animation.

The default Roblox animation script actually plays run/walk and other movement animations at AnimationPriority Core, which is the lowest one. It should play them at AnimationPriority Movement.

Ah, that explains it. Is there anyway that you guys can update Roblox to play those movement animations at AnimationPriority Movement? Or will they always be at AnimationPriority Core?

I’m getting the same thing, got any way to fix this?

2 Likes

I gave up on that project a long time ago, but I haven’t seen it happen for a while. 3:

Roblox animations play at the Core priority so Developer animations can easily override them. Is there a reason you want to have animations that are of lower priority than the default animations?

I’ve also noticed that animation priorities only work on the client, this could just be me but my animation always played on my end but for everyone else it didn’t

1 Like