unity 5.6.6f1
在游戏中角色的两个动作直接切换过度效果上,如果两个动作没有很好的衔接会出现一定程度上的僵硬现象。这种情况可以用BlendTree来进行融合。比如这样:
这里配置了三个Motion动作,三个动作之间的切换利用Controller的Parameter来控制,这个Parameter同时可作为BlendTree的Thresholds。Thresholds是用来配置各个Motion的触发条件的。
配置好这个BlendTree之后,这个BlendTree可以作为AnimatorController的State来触发,如图:
这样当Animator的state进入到RelaxState时就自动根据Thresholds来播放对应的Motion了。基于这套流程可以很方便的应用到游戏里的AI怪物之类行为单位。下面举个例子。
现在有个带Fly, Run,Walk,Idle动画的模型,针对这个模型来做个AnimatorController并且驱动这个Controller来使得这个模型随机做动作。这里设计这个模型每次Fly动作一段时间然后随机执行其余三个动作的其中一个,根据这个设想创建了如下的控制器(可以根据脚本来创建,代码在最后),RelaxState配置包含三个Motion(Run, Walk, Idle)的BlendTree,FlyState配置FlyMotion。
配置State之间的控制条件BehaviourId
然后配置好BlendTree的Thresholds参数RelaxRandom。配置好控制器之后,然后在脚本里面按照自己设定的规律来控制BehaviourId和RelaxRandom就可以驱动这个模型来做对应的动作了,这样很方便。
1 |
|
针对于上面配置Controller的各个手动操作也可以通过脚本来一次生成。代码如下:
1 |
|
End