- 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
![](https://koobas.hobune.stream/wayback/20220613011244im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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