7
votes

I made a simple animation for a sword gameobject to constantly slowly move up and down while the player character is standing still.

My sword has an Animator component attached:

see here

The Animator Controller is also very simple, with this animation being attached to my default state:

see here

The animation plays just fine in the preview mode of the Animation window. But when I run my game, the animation does not play at all, the sword just stands still instead of moving.

What is the cause of this problem?

2
How are you trying to call the Animation?Aizen
@Aizen I put my animation (IdleSword) in the default state of my Animator Controller. Doesn't that mean it's called automatically? Nevertheless, I've tried calling the animation manually from a script with GetComponent<Animator>().Play("IdleSword") and it does nothing either.Blaperile
Maybe I am wrong, but I think that to call directly GetComponent<Animator>().Play("IdleSword"), you need to have a transition from Any State to IdleSword.Ricardo Reiter
Your IdleSword is market to Loop? There is a checkbox in the animation properties.Ricardo Reiter
@RicardoReiter Yes it's marked to loop. I just tried adding a transition from Any State to IdleSword but it made no difference. My Animator Controller does show that the state is running (the blue progress bar beneath it), but the animation itself isn't playing.Blaperile

2 Answers

5
votes

I finally solved the problem. It turns out that all I needed to do was turn off "Apply Root Motion" on my Animator for it to work properly.

2
votes

In case you are testing out on an Android Device I would suggest you to go to Build Settings > Player Settings > Other Settings > Uncheck "Static Batching". Build and deploy apk on your phone. Animations should work smoothly now.