Out of necessity, I need to set the animation type on a specific mesh to Legacy. Here is some example code: Code (csharp): private const float FramesPerSecond = 50f; private float numFramesElapsed; private float numTotalFramesInMovementClip; public GameObject AnimatedMesh; public AnimationClip MovementClip; private void Awake() { this.numTotalFramesInMovementClip = this.MovementClip.length * FramesPerSecond; } private void Update() { if (this.numFramesElapsed <= this.numTotalFramesInMovementClip) { this.MovementClip.SampleAnimation(this.AnimatedMesh, this.numFramesElapsed / this.numTotalFramesInMovementClip * this.MovementClip.length); this.numFramesElapsed++; } } When I start the game, the animation clip also begins playing, just as expected. However, once this.numFramesElapsed becomes strictly greater than this.numTotalFramesInMovementClip -- i.e., once we no longer enter the if clause at all -- the mesh immediately returns to its position as specified at the very beginning of the clip, and just stays there. This violated my expectations -- I'd expected the mesh to remain in the position specified at the end of the clip. Do I really have to run this.MovementClip.SampleAnimation(this.AnimatedMesh, this.MovementClip.length); in every single Update() call after exiting the if clause? Is there any other way to ensure that the mesh stays in the final position specified by the clip?