- Home /
 
How to match the first position and orientation of an animation to the last ones of the previous animation
I want an the first position and orientation of a FBX animation to match to the last ones of the previous animation by the following script.
 void Start() { prevLastPos = new Vector3[animName.Length-1]; prevLastAng = new Quaternion[animName.Length-1]; for(int i = 0; i < animName.Length-1; i++){ animation[animName[i]].enabled = true; animation[animName[i]].weight = 1.0f; animation[animName[i]].normalizedTime = 1.0f; animation.Sample(); prevLastPos[i] = transform.position; prevLastAng[i] = transform.rotation; animation[animName[i]].enabled = false; } }
  
               void Update () { if(!animation.isPlaying){ if(curAnim > 0){ transform.position = prevLastPos[curAnim-1]; transform.rotation = prevLastAng[curAnim-1]; } animation.Play(animName[curAnim]); curAnim++; if(curAnim == animName.Length) curAnim = 0; } } 
But it doesn't work. Appropriate values cannot be assigned in prevLastPos[] and prevLatAng[]. Does anyone know how to solve this problem?
have you tried removing the animation and then applying the position? Cause I think it doesn't affect due to do$$anonymous$$ation of the current animation position. So remove by script then only apply the positions.
Answer by yenyen · Oct 16, 2011 at 03:37 AM
Thanks for your comment. As you have pointed out, I have modified the script as follows.
void Start() {    
  prevLastPos = new Vector3[animName.Length-1];
  prevLastAng = new Quaternion[animName.Length-1];
  while ( animation.GetClipCount() > 0 ){
    foreach (AnimationState state in animation){
      if ( state ){
        animation.RemoveClip( state.clip );
        break;
      }
    }
  }
  for(int i = 0; i < animName.Length-1; i++){
    animation.AddClip(animClip[i], animName[i]);
    AnimationState state = animation[animName[i]];
    state.enabled = true;
    state.weight = 1.0f;
    state.normalizedTime = 1.0f;
    animation.Sample();
    prevLastPos[i] = transform.position;
    prevLastAng[i] = transform.rotation;
    state.enabled = false;
    animation.RemoveClip(animName[i]);
  }
  for(int i = 0; i < animName.Length; i++){
     animation.AddClip(animClip[i], animName[i]);
  }
}
 
                
               But I have same results. Can't I get the last position in an FBX animation?
Your answer
 
             Follow this Question
Related Questions
Blender model shifted on X and Y axis on some part of the animation 2 Answers
Why does Parented FBX keep transforming to 0,0,0 when i press play? 1 Answer
Why do my animations keep resetting my prefabs position? 1 Answer
Modo not working well with Mecanim.. 1 Answer
Trying to use character animation from poser, without any success? 1 Answer