Unity3D——在Unity3D中使用关键帧动画的注意事项

1、记录Animation动画复位的一个注意事项
最近想做一个动画的分步播放,但是在实现动画复位时发现以前用的动画复位的代码不起作用了:

@Animation = AnimationObj.GetComponent<Animation>();
AniState = @Animation[ClipName];
AniState.time = 0;      
@Animation.Sample();           
@Animation.Stop(ClipName);
AniState.enabled = false;

经查,原因是动画分步播放结束后我使用了:

@Animation.Stop(ClipName)

来停止动画播放,在动画已经停止播放的情况下是无法使用以上代码进行复位的,需要先播放动画,再复位,因此需要加一行代码:

@Animation.Play(ClipName);
AnimationState AniState = @Animation[ClipName];
AniState.time = 0;  
@Animation.Sample(); 
@Animation.Stop(ClipName); 
AniState.enabled = false;

这样就可以正常复位了,记录下来怕自己忘了

2、在做动画的分布播放时,发现unity中播放关键帧动画仅播放至最后一个关键帧。举个例子,若动画总长1700帧,但是最后一个关键帧打在了第1660帧,则该动画在unity中会被认为仅有1660帧,这就要求在计算每个关键帧的归一化时间时需要将分母设为1660而不是1700,不然会发现在unity中分步播放动画时动画的实际进度与设想的不同

你可能感兴趣的:(unity3d)