Legacy Animation Mesh reset?


I am currently working on some arm animations for my little game (I use Unity free) and I have a problem when it comes to play multiple of them one after each other. This is my first time doing animations so I don’t know if I missed something.

I have 2 animations : Idle and Run.

If nothing is pressed Idle plays, if UpArrow is pressed Run played. So far no problem.

My code looks like this :

if (Input.GetKey (KeyCode.UpArrow))

			Hero.animation.Stop ("Idle_NoWeapon");
			Hero.animation.CrossFade ("Test", 0.2f);

		if (!Input.anyKey) 
			Hero.animation.Stop ("Test");
			Hero.animation.CrossFade ("Idle_NoWeapon", 0.2f);

Test being the main Run part here.

Both loop no problem too BUT when I switch from one to the other they are reseted to their time 0 like they should except the Mesh stays where it was from the previous animation. So the new animation doesn’t start at the regular position but at whatever position the arms were when I stopped the old one.

Am I supposed to do some kind of transition animation? Which seems ridiculous because I would have to do ons for each frame of each animation and for each animation they can go to.

I find nothing really helpful in the docs.


As I understand it, calling CrossFade will blend from one animation to the next (assuming they’re both on the same anim layer). You might be tripping that up by calling Stop before CrossFade.