美文网首页Unity
在Unity中使用spine动画

在Unity中使用spine动画

作者: 光明程辉 | 来源:发表于2017-06-18 14:24 被阅读375次

    spine 的运行库: https://github.com/EsotericSoftware/spine-runtimes
    笔者在使用spine 时遇到的一些问题,这里基本上你也许会遇到:下面是 yizhangxyz的博客 的博客。

    可以使用spine制作骨骼动画来给unity使用。spine提供了unity运行包。运行包的版本一定要和spine版本一致,不然会报错。

    导入spine动画:

    由spine导出的动画文件有3个:xx.atlas,xx.json,xx.png。将这三个文件直接导入unity会报错,将xx.atlas改为xx.atlas.txt,这时会自动生成xx_Atlas.asset,xx_Material.mat。然后在unity里面create spine SkeletonData,指定xx_Atlas.asset和xx.json。就可以用SkeletonData生成动画了。

    // 教程
    //1.导出动画


    导出动画.png

    // 2.设置 .txt文件


    设置 .txt文件 .png
    // 3.导出文件到Unity中使用 成功导出文件.png

    控制动画播放:

    SkeletonAnimation skeletonAnimation; //gameobject的component。
    Spine.AnimationState spineAnimationState = skeletonAnimation.state;
    Spine.Skeleton skeleton;

    spineAnimationState.SetAnimation(0, animationName, true);

    切换动画的bug:

    由于spine在切换动画的时候自动补偿,用于动画的平稳过度。但是会导致残影等bug,这时候需要在SetAnimation前调用
    skeletonAnimation.skeleton.SetToSetupPose ();
    spineAnimationState.ClearTracks ();
    来消除前一个动画的影响。

    添加事件:

    skeletonAnimation.state.Start:开始播放
    skeletonAnimation.state.End:动画被清除或者中断
    skeletonAnimation.state.Interrupt:动画被打断
    skeletonAnimation.state.Complete:播放结束
    skeletonAnimation.state.Event:用户自定义事件

    事件设置采用lambda表达式:

    skeletonAnimation.state.Complete += (state, trackIndex,loopCount) => {
    Debug.log("");
    };

    动态获取slot的坐标:
    Vector3 pos = skeletonAnimation.skeleton.FindSlot("hat_1").Bone.GetWorldPosition(transform);

    相关文章

      网友评论

        本文标题:在Unity中使用spine动画

        本文链接:https://www.haomeiwen.com/subject/zgiiqxtx.html