Window——>Animation——>Animation
Animation窗口 直译就是动画窗口,它主要用于在Unity内部创建和修改动画,所有在场景中的对象都可以通过Animation窗口为其制作动画
原理:
制作动画时:记录在固定时间点对象挂载的脚本的变量变化
播放动画时:将制作动画时记录的数据在固定时间点进行改变,产生动画效果
每一个动画文件都有自己的一个生命周期,从动画开始到结束,我们可以在动画时间轴上编辑每一个动画生命周期中变化
假设某个动画的帧率为60帧每秒,意味着该动画1秒钟最多会有60次改变机会,每一帧的间隔时间是 1s / 60 ≈ 16.67毫秒,也就是说 我们最快可以每16.67毫秒改变一次对象状态
动画在时间轴上的某一个时间节点上处于的状态
保存动画文件时,Unity会帮助我们完成以下操作
Unity中有两套动画系统
新:Mecanim动画系统——主要用Animator组件控制动画
老:Animation动画系统——主要用Animation组件控制动画(Unity4之前的版本可能会用到)
目前我们为对象在Animation窗口创建的动画都会被Animator动画系统支配
有特殊需求或者针对一些简易动画,才会使用Animation动画系统
注意:
在创建动画之前为对象添加Animation组件之后再制作动画,这时制作出的动画和之前的动画格式是有区别的
//1.播放动画
if(Input.GetKeyDown(KeyCode.Alpha1))
{animation.Play("1");
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{animation.Play("2");
}
//2.淡入播放,自动产生过渡效果
if(Input.GetKeyDown(KeyCode.Alpha3))
{//当你要播放的动画的开始状态 和当前的状态 不一样时 //就会产生过渡效果animation.CrossFade("3");//animation.Play("3");
}//3.前一个播完再播放下一个
if( Input.GetKeyDown(KeyCode.Alpha4) )
{//animation.PlayQueued("2");animation.CrossFadeQueued("2");
}//4.停止播放所有动画
//animation.Stop();//5.是否在播放某个动画
if( animation.IsPlaying("1") )
{}//6.播放模式设置
animation.wrapMode = WrapMode.Loop;//7.其它(了解即可,新动画系统中会详细讲解)
//层级和权重以及混合(老动画系统需要通过代码来达到动画的遮罩、融合等效果)
//设置层级
animation["1"].layer = 1;
//设置权重,不同层级的动画播放时,weight=1的动画会覆盖层级低的动画
animation["1"].weight = 1;
//混合模式 叠加还是混合
animation["1"].blendMode = AnimationBlendMode.Additive;
//设置混组相关骨骼信息
animation[""].AddMixingTransform();