基于animator的动画播放流程:
1.新建AnimatorController
2.创建动画状态
在上述界面右键Create state->Empty,并命名为Init,重复上述步骤并命名为State01,在Empty上右键Make Transition并在State01上左键点击,如下图所示。至此建立了两个动画状态Init和State01,并且创立了init状态到State01的两个切换开关(箭头)。由于Init状态与Extry相连,所以属于初始状态,即运行即激活Init动画。
3.动画绑定
点击Init状态,并在Inspector面板中绑定动画,如下图所示,同理设置State01动画。动画为其他软件如Maya等导出,也可以自己通过animation简单制作一下。
4.设置开关
,如下图所示。点击+可以选择开关类型,在此选择int并命名为switch。
5.绑定开关
选择第二步中init到State01的箭头,在inspector面板中点击Conditions中+,选择switch,中间选项选为Equals,并把数值设为1。同样的设置应用到State01到Init的箭头,并把数值设为2。至此两个动画状态的开关设置好了。即switch=1时动画从init切换到State01, switch=2时动画返回到Init(因为init与entry相连,所以一般init状态动画为静止动画,如站立)。注意HasExitTime参数,如果动画切换时,需要当前动画播放完成后切换,则勾选上,而且一连串动画播放时也需要勾选上。
6.代码控制
在某一游侠物体上添加animator组件,并将上述建立的animatorController赋值给他,通过animator控制switch参数即可实现控制动画播放。
animator.SetInteger("switch", 1)
可以通过state名字单独控制动画播放,此种播放可以不用设置transition:
animator.Play("State01", 0, 0f);
7.动画倒播
按第四步设置参数speed,点击State01,并在inspector面板中选中Speed后边的parameter参数,并在Multiplier选择设置的speed,如下图所示。然后既可以通过如下代码控制播放速度,负数表示反向播放,下述代码表示从动画一半的地方反向播放。
animator.SetFloat("speed", -1);
animator.Play("ww", 0, 0.5f);
//animator.Speed设置速度也可以
获取当前clip:
AnimationClip c = animator.GetCurrentAnimatorClipInfo(0)[0].clip