请教大家一个关于骨骼动画两个动作衔接的问题。
问题是这样的,我们在做一个动作游戏,用的是cocostudio做骨骼动画的方式。现在有两套人物动作,一个是抱枪跑步,一个是抱枪跑步的时候开枪。美术在做动作的时候,给做了两个完整的全身动作

现在问题来了,如果角色刚开始在跑步,然后点了攻击键,需要播放抱枪跑步开枪的动画。可如果这时候腿已经迈出去一半了,直接播抱枪跑步开枪的动画,腿肯定会瞬间闪回初始位置,看上去很不流畅。请教大家,这种情况都是如何处理的呢?
以前从没有接触过骨骼动画,有了这个问题后,请教了群里的一些人,尝试过以下的解决方式:
1、在查看骨骼动画的相关源码的时候,看到播放动画的函数
void ArmatureAnimation::play(const std::string& animationName, int durationTo, int loop)
这个函数的第二个参数,dutationTo,这个可以让一个动作在几帧之内平缓的过度到第二个动作上。我试了一下,发现这个参数适合不同的动作之间切换,比如从站立到跑步这两个动作,如果放到我说的这个问题上,这个值输的大了,用户会感觉到卡顿,少了,还是会有闪动画的现象。
2、有人建议我说将上下半身分开,建立两个cocostusio工程,然后用两个Armature分别生成上下半身,组合起来。上半身播放开枪动画的时候,下半身依然播放跑步,互不影响。但是经过我的尝试后,发现会有新的问题。因为上下半身是一个整体,在播放的时候会有节奏的上下移动,这样才会形成跑步的效果。所以上半身的动画和下半身的动画必须同时从第0帧开始播放。那么假如上半身和下半身的完整动画都是24帧,如果在播到第6帧的时候,点了攻击键,上半身播放攻击动画24帧,下半身也播完24帧,还是在第6帧,这时候,上半身是不能直接再播放跑步动画的,会和腿部的节奏对不起来,有可能出现上半身在最高点,下半身在最低点,身体分离了。。。。。如果让上半身等待18帧,等腿部也到第0帧了,再同时播放,上半身还是会卡在那,很不流畅。
请问大家是怎么处理这种情况的呢?
