• Spine学习五- spine动画融合


    在许多地方,都需要用到动画融合,unity的新版动画系统已经能够很方便的进行动画融合,那么使用spine的动画状态机的情况下,如何来进行动画融合呢?

    官方有两种方案,一种是使用混合动作实现,另一种是使用spine的动画状态机实现,这里讲解一下状态机的实现:

     1 public class cartoonCombine : MonoBehaviour {
     2 
     3     SkeletonAnimation skeletonAnimation;
     4     AnimationStateData stateData;
     5     Spine.AnimationState state;
     6     public float mixTime = 0.5f;
     7     public float mixTime2 = 0.5f;
     8     void Start () {
     9         
    10         skeletonAnimation = GetComponent<SkeletonAnimation>();
    11         state = skeletonAnimation.AnimationState;
    12         //获取状态机动画数据
    13         stateData = skeletonAnimation.SkeletonDataAsset.GetAnimationStateData();
    14 
    15         //设置动画混合,第一个参数是 当前动画,第二参数是下一个动画,第三个参数是从当前动画过度到下一个动画所需时间
    16         stateData.SetMix("walk", "run", mixTime);
    17         stateData.SetMix("run", "walk", mixTime2);
    18 
    19         skeletonAnimation.AnimationState.SetAnimation(0, "walk", true);
    20 
    21     }    
    22     
    23     void Update () {
    24 
    25         if (Input.GetKeyDown(KeyCode.A))
    26         {
    27             skeletonAnimation.AnimationState.SetAnimation(0, "run", true);
    28         }
    29 
    30         if (Input.GetKeyDown(KeyCode.D))
    31         {
    32 
    33             skeletonAnimation.AnimationState.SetAnimation(0, "walk", true);
    34         }
    35     }

    将该脚本挂到一个挂有 SkeletonAnimation 组件的物体上,需要确保 SkeletonAnimation的Spine资源里面有"walk" 和"run"这两个动画,否则会出错,然后在运行状态下查看动画融合的效果。

  • 相关阅读:
    阿里数据中台底座的12年建设实践
    淘宝小部件:全新的开放卡片技术!
    判断QQ是否在线
    Linux消息队列应用
    轻松学习Linux之如何创建可执行脚本
    JAVA多线程学习笔记
    轻松学习Linux之Shell文件和目录属性详解
    Firefox必备的24款web开发插件
    数论+图论+map——cf1323E
    【codevs1116】四色问题
  • 原文地址:https://www.cnblogs.com/leiGameDesigner/p/9114000.html
Copyright © 2020-2023  润新知