流星

流星消逝的时候,光明已在望。黑暗无论多么长,光明迟早总是会来的。

Unity的动画系统 有更新!

    首先更正一点之前错误的认知,unity里的animation有一个接口叫做crossfade
    这个函数是用来做动画淡出淡入的,我之前一直认为这个函数是让动画从正在播放的动画的这一帧(调用crossfade时)起
    开始向目标动画的第一帧来做骨骼姿势之间的插值,来实现完整的淡入淡出的
    但是我发觉这种做法,会令动画的切换看起来很别扭,后面翻了一下unity4.3.1f1的源码,发觉这种认知根本就是错的,这也是这个游戏里的动画看起来僵硬感的问题所在
    之后在知乎又发现一篇讲动画系统的好文章,这里分享一下
    https://zhuanlan.zhihu.com/p/27073261
    一个鹅厂大佬的视角,让我开拓了眼光
    首先unity的动画系统,这里谈的是Animation,首先概述一下Animation
    Animation是用来控制动画的,这个组件上可以存放一系列的AnimationClip,AnimationClip是一个动画剪辑,这个动画剪辑通过一系列曲线记录了一个节点在一定时间内某些属性发生的变化(也就是关键帧上的数据)
    AnimationClip的数据是公用的,当Animation组件播放时,一个AnimationClip会在Animation内生成一个与其对应的AnimationState,这个state就是记录了动画的播放状态,比如播放到哪个时刻了,而AnimationState也会记录自己的clip是谁
    当调用crossfade时,在指定的淡出时间内,当前正在播放的animationState的权重逐渐降低为0,而目标动画的animationState的权重逐渐增加到1,然后,再由各自的混合算法,算出最终骨骼姿势
    这也是动画的淡入淡出的实际做法,在引擎源码runtime/Animation.cpp里有对应的实现
    所以后面会改进一下动画淡入淡出上存在的bug,希望能够让角色动画不那么别扭

    validate