自己做的demo也做到动画这里了,所以学一学状态机
1.在Animator->Controller 挂Controller(这里需要Avatar,网上自己找的资源就自求多福吧,不一定有)
2.看看界面构成(双击你创建的controller)
Animator 窗口
1.Layer
最开始有个误区(创建多个controller==一个controller+多个layer),其实很容易理解,玩过和平精英没?没玩过可以找个朋友问问(此处举例哈,不要杠吃鸡是ureal做的),开镜挺住跟开镜走,上半身都是开镜动过,但是停跟走,当然你们要是动作美术比较闲在一个状态机加上这两种状态我也没话说,这时候还有躺着开镜等待,慢慢加去吧。为了防止上面那个傻乎乎的一堆状态,所以有layer,两个动画融合(可以思考拿着手枪跑,拿着步枪跑)。总结下来:相当于把人五马分尸,每一块一个layer.
2.Patameters
四种参数类型,比如我在上面设置了一个abc变量(float),就可以通过API在代码里设置这个值(当前如果你某个状态或者某个混合树用到了,对应值就发生改变了)
3.单个layer
Any State:任何状态
任意状态 (Any State) 是一个始终存在的特殊状态。此状态适用于您想要进入特定状态的情况(无论您当前处于哪个状态)。这是向状态机中的所有状态添加相同外向过渡的简便方法。
Entry:默认开始状态
Exit:退出状态,如果此时退出的是根状态机,那么状态机会回到Entry状态
属性: | 功能: |
---|---|
Speed | 动画的默认速度 |
Motion | 分配给此状态的动画剪辑 |
Foot IK | 此状态下是否遵循 Foot IK。适用于人形动画。 |
Write Defaults | AnimatorStates 是否为其运动执行未动画化的属性写回默认值。 |
Mirror | 是否为状态生成镜像。这仅适用于人形动画。 |
Transitions | 源自此状态的过渡的列表 |
Paramter勾选后可以指定参数控制具体属性
Write Defaults勾选后用默认动画剪辑属性覆盖到状态上
Foot IK 勾选上之后会有一个脚部IK修正,有一次角色跑动不自然,
Mute 表示将禁用过渡。而 Solo 功能将启用过渡,并与源自同一状态的其他过渡有关
Mirror镜像可以反转当前动画
Cycle Offset周期偏移,会影响动画开始的起始位置
Has Exit Time: 如果勾选了,那么在执行这个动画之前,即使满足了参数要求,也要等上个动画执行完毕才能执行这个动画。比如死亡动画应该是满足条件立即执行,但是如果勾选了Has Exit Time,就必须等当前动画播放完毕才能播放死亡动画。
蓝色部分为unity动画融合的部分,可以让两个动画平滑过渡。也可以自己拖动设置成想要的效果。
点击加号添加事件,把事件拖到想要触发的位置。在下面设置方法名和参数,Function名字要和脚本中要调用的函数名保持一致,Float、Int、String、Object皆为传入方法的参数,参数只能传入0或1个。脚本要挂载到使用该动画的模型上。
4子状态机
就是某个节点不是一个状态而是一个状态机(来代替这个状态)