美文网首页iOS TipsCocos2dUnity技术分享
骨骼动画编辑器——Spine

骨骼动画编辑器——Spine

作者: 光明程辉 | 来源:发表于2016-11-08 13:51 被阅读289次

    声明:

    这笔记是来自cocos2d-x官网,各位不要喷!我只是给我自己使用的,未来一系列的游戏文章都是这样。因本人平时使用手机简书较多,故写在简书上方便本人使用而已。

    Spine是一款针对游戏的2D骨骼动画编辑工具,它具有良好的UI设计和完整的功能,是一个比较成熟的骨骼动画编辑器。Spine旨在提供更高效和简洁的工作流程,以创建游戏所需的动画。

    使用Spine创建骨骼动画分两大步骤:

    在SETUP模式下,组装角色部件,为其绑定骨骼;
    在ANIMATE模式下,基于绑定好的骨骼创建动画。

    非常棒的教程:http://zh.esotericsoftware.com/spine-quickstart#Character-Images

    1)在SETUP模式下,选中Images属性,导入所需图片资源所在文件夹,其中路径名和资源名中不能出现中文,否则解析不了;
    2)拖动Images下的图片到场景,对角色进行组装(把各个身体部位拼在一起),可通过Draw Order属性调整图片所在层的顺序;
    3)创建骨骼,并绑定图片到骨骼上,要注意各骨骼的父子关系。
    4)切换到ANIMATE模式,选中要“动”的骨骼,对其进行旋转、移动、缩放等操作,每次改动后要记得打关键帧。
    5)在菜单栏找到Texture Packer项,对角色纹理进行打包,资源文件后缀为atlas(而非Cocos2d-x常用的plist)。打包后将生成两个文件,即:png 和 atlas。

    屏幕快照 2016-11-08 13.54.32.png

    6)导出动画文件Json。

    Spine动画的使用

    Cocos2d-x程序中,使用Spine动画首先需要包含spine的相关头文件。

    #include <spine/spine-cocos2dx.h>
    #include "spine/spine.h"
    using namespace spine;
    

    其常用方法如下:
    创建一个Spine动画对象,将动画文件和资源文件导入。

    auto skeletonNode = new SkeletonAnimation("enemy.json", "enemy.atlas");
    
    骨骼动画往往是不止一个动画的?

    例如:当人物需要行走时,就设置播放动画为行走;当要发动攻击时,就设置播放动画为攻击。下面方法可以设置当前播放动画,其中参数false表示不循环播放,true表示循环播放。

      skeletonNode->setAnimation(0, "walk", true);
    

    setAnimation方法只能播放一种动画,所以当要连续播放不同的动画时,需要使用addAnimation方法来实现,它可以一条一条的播放不同的动画。

    skeletonNode->addAnimation(0, "walk", true);//行走动画
    skeletonNode->addAnimation(0, "attack", false);//攻击动画
    

    设置动画的播放快慢可通过设置它的timeScale值来实现。

    设置是否显示骨骼通过设置debugBones,true表示显示,false表示隐藏。

    skeletonNode->debugBones = true;
    

    最后:例子:创建一个player行走和攻击的动画, 并且循环播放。

    • 希望你自己跟着写一遍,不要直接复制进去。
    auto skeletonNode = new SkeletonAnimation("enemy.json", "enemy.atlas");
    skeletonNode->setMix("walk", "attack", 0.2f);
    skeletonNode->setMix("attack", "walk", 0.4f);
    
    skeletonNode->setAnimation(0, "walk", false);
    skeletonNode->setAnimation(0, "attact", false);
    skeletonNode->addAnimation(0, "walk", false);
    skeletonNode->addAnimation(0, "attact", true);
    
    skeletonNode->debugBones = true;
    
    Size windowSize = Director::getInstance()->getWinSize();
    skeletonNode->setPosition(Point(windowSize.width / 2, windowSize.height / 2));
    addChild(skeletonNode);
    

    效果图:

    屏幕快照 2016-11-08 14.08.06.png

    相关文章

      网友评论

        本文标题:骨骼动画编辑器——Spine

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