动画编辑器和骨骼动画使用

动画编辑器

1.使用编辑器来创建编辑动画

(1)创建一个节点

(2)往节点里添加动画组件cc.Animation

(3)编辑 动画剪辑器制作 AnimClip

动画剪辑就是一份动画的声明数据,我们将它挂在到Animation组件上

就能够将这份动画数据应用到节点上。

(4)把动画剪辑设置到Animtion里面去

2.动画编辑器的使用

然后直接点击新建AnimaClip,并且保存好.

自动生成了可访问的动画列表.这个组件可以带多个这样的.

把它拖动到Default Clip就是 选择自动

播放或者 调用play时的Clip

Play On Load是否在运行游戏后自动播放默认的动画Clip

Sample采样 60就是一秒钟的帧数

那这样的话 他要1秒钟才能执行完 60帧

如果改成30 那他这个1秒钟 就是30帧

Speed 播放速度,大于1加快,小鱼1变慢

wrapMode是播放模式

3.动画编辑器的原理

(1)在不同的时刻可以调整节点以及孩子节点的不同属性的值,

然后创建出补间动画:

假如我们有一个物体要从A点移动到B点,我们在开始的

时间插入给个位置,在结束的时间插入给个位置.

动画编辑器就会自动的补间这段距离 动画.

(2)节点条动画的属性:

位置,缩放,旋转,大小,颜色,透明度,锚点,扭曲.

假如我们要这个红色的块 从A到B, 在1秒钟内

选择要编辑的点击Add property添加属性

a添加一个position属性

b在0.00帧 插入一个位置属性

c拖动到你想要结束的时间,然后在添加一个位置属性

d 拖动这个节点 有一个虚线

e这蓝色的就是动画编辑器自动补间动画

f拖动时间轴 就能看到动画了

透明度属性怎么用呢?还是一样在开始和结束位置插入属性

他就生成补间动画。

在对应的结束时间轴 可视化的改变属性即可

4.wrapMode来选择播放模式

(1)Loop 不停循环的执行这个动画

(2)PingPong 循环 顺着播一次 反着播一次

(3)Reverse 反着播一次

(4)LoopReverse 循环的反着播放

(5)PingPongReverse 循环 先反着播  然后顺着播

5.补间动画是可以 调整的

点击一下虚线他就变粗了

然后再点击一下就有一个编辑拖拽的点 这样就能编辑曲线了

6.帧动画 SpriteFrame

由一张一张的精灵组成动画

直接拖动精灵帧会自动生成节点并且带有精灵组件

选择这个节点 第一个帧我们要插上这个图的属性

选择spriteFrame

添加关键帧

拖动在修改一个

点击对应的 然后修改你要显示的精灵帧 就OK啦

7.Animation组件 在代码中使用

首先第一步你还是要获得这个组价,用编辑器关联或者代码获取。

     onLoad :function() {
     //获取挂在Animation组件的节点 并获取动画组件
     this.anim = this.node.getChildByName("anim")
     .getComponent(cc.Animation);

Animation 重要属性:

(1)defaultClip:默认的动画剪辑

(2)currentClip:当前播放的动画剪辑

Animation组件主要方法:

(1)play([name,[start_time]]),播放指定的动画,如果没有指定就播放

默认的动画.

name就是这个 

start_time 就是从哪个时间开始 默认是0

返回AnimationState

    start: function() {
    //开始时间 默认就是从0开始
    this.anim.play("anim_class");
    },
    
    如果不指定名字  那么他 使用默认的 AnimaClip
        start: function() {
    //开始时间 默认就是从0开始
    this.anim.play();
    },

(2)playAdditive 和play一样,(不会停止当前播放的动画)

如果没有指定动画, 则播放默认动画.

(3)stop(name)停止 指定的动画,

如果没指定名字就停止当前播放的动画.

pause/resume: 暂停和唤醒动画.

(4)getClips:返回数组里带的AnimationClip数组

     //获取数组、组输出名字
     var clps = new cc.AnimationClip();
     clps = this.anim.getClips();
     for(var i=0;i<clps.length;i++){
     console.log(clps[i].name);
     }

Animation 播放事件:

play:开始播放 stop;停止播放 pause:暂停播放时 resume:恢复播放时

lastframe:假如动画循环次数大于1,当动画播放到最好一帧时

finished:动画播放完成时

    //监听动画事件  第一个参数就是事件类型
     this.anim.on("play",function(){console.log("开始播放")}.bind(this));

8.在动画里触发代码

(1)插入一个事件到动画里

(2)编辑这个时间触发的函数

(3)遍历当前动画组件所挂节点上的所有脚本,根据这个名字来触发函数

首先选择事件 然后点击添加事件 然后出现一个小白块 双击打开

写函数名 然后如果有参数 就手动添加就行

类型也是可选的

这个函数的名称是这个动画组件所挂的节点上的,

任意组件的代码接口. 这时候你这个动画组件挂的节点

必须有个脚本组件,里面有这个处理函数才行了

骨骼动画

spine骨骼动画工具

1:骨骼动画:把动画打散,通过工具,调骨骼的运动来形成动画

2:spine是一个非常流行的2D骨骼动画制作工具 由专业美术人员制作

3:spine 导入3个文件

(1)png文件 :动画的"骨骼"的图片集

(2)atlas文件 每个骨骼在图片集里面的位置,大小.

(3)json文件:骨骼动画的anim控制文件,以及骨骼位置信息等

这个文件在cocos 目录下 tests\cpp-tests

4.使用骨骼动画 只要直接拖动到场景或者添加一个空节点添加骨骼动画组件

为什么使用骨骼动画呢?

如果一个动画每一帧都做成一个精灵,那这样就会比较占资源.

那比如一个角色他行走的动画是固定的,我们把他的手脚身体拆出来,

使用工具让他在播动画的时候,每个手脚的位置都编辑好,这样的话

我们用一张图资源的情况下, 可以做出动画,这样做就比较节省资源.

Animation:选择默认播放的动画

Loop是否循环播放

Premultiplied Alpha 是否启用贴图预乘

关闭                  启用

  

Debug Bones 显示骨骼

5.sp.Skeleton

1:sp.Skeleton:控制面板属性

Skeleton Data:骨骼的控制文件 json文件

Default Skin:默认皮肤

Animation:正在播放的动画

Loop:是否循环播放

Permnliplied Alpha是否启用贴图预乘

TimeScale:播放动画的事件比例系数 值越大 播放速度越快

Debug Slots:是否显示Slots调试信息

Debug Bone: 是否显示Bone调试信息

2.sp.Skeleton:重要方法:Skeleton是以管道的模式来播放动画,

管道用整数编号,管道可独立播放动画 Track

(1)clearTrack(trackIndex);清理对应Track的动画

(2)clearTracks(); 清楚所有Track动画

(3)setAnimation(trackIndex,"动画名字",is_loop)

清楚管道所有动画,再重新播放

(4)addAnimation(trackIndex,"动画名",is_loop);往管道添加一个动画

6.再代码里使用动画

首先还是要获得骨骼组件 然后创建3个按钮让他出现不同的状态、

比如说 跑 跳跃 开枪

直接把他绑定到 组件上

  

给3个按钮绑定事件 并设置播放动画

cc.Class({
    extends: cc.Component,
    properties: {
    ske_anim: {
    type: sp.Skeleton,
    default: null,
    },
    },
    onLoad: function(){
  //再这里就有一个类似队列的东西 来播放动画
  //如果往队列管道里添加几个动画,他会顺序播放
  //播放入场动画
  this.ske_anim.setAnimation(0,"walk",true);
  this.ske_inedx = 1;
    },
    //跑
    anim_run:function(){
    //清理动画播放管道,管道是用索引来表示的
    //this.ske_anim.clearTracks();//清理所有播放管道的动画
    //this.ske_anim.clearTrack(0);//按照索引来清理掉
    this.ske_anim.clearTrack(0);
    //将要播放的动画 设置进去  
    //这里会把管道清空
    //第一个参数是管道索引 第二个是动画名字 第三是否循环
    this.ske_anim.setAnimation(0,"run",false);
    //播放完后 继续播放走的 动画
    //将这个动画以排队的方式假如到管道
    this.ske_anim.addAnimation(0,"walk",true);
    
    },
    //跳
    anim_jump:function(){
    this.ske_anim.clearTrack(0);
    this.ske_anim.setAnimation(0,"jump",false);
    his.ske_anim.addAnimation(0,"test",true);
    },
    //射击
    anim_shoot:function(){
    this.ske_anim.clearTrack(0);
    this.ske_anim.setAnimation(0,"shoot",false);
    his.ske_anim.addAnimation(0,"run",true);
    },
    });

7.动画监听事件

setStartListener:设置动画开始播放的事件

setEndListener:设置动画播放完成会后的事件

setCompleteListener:设置播放一次循环结束后的事件

  this.ske_anim.setStartListener(function(){
  console.log("开始播放");
  });
  this.ske_anim.setCompleteListener(function(){
  console.log("播放完成");
  });

原文地址:http://blog.51cto.com/12158490/2066504

时间: 2024-10-07 06:03:20

动画编辑器和骨骼动画使用的相关文章

【Away3D代码解读】(五):动画模块及骨骼动画

动画模块核心存放在away3d.animators包里: Away3D支持下面几种动画格式: VertexAnimator:顶点动画 SkeletonAnimator:骨骼动画 UVAnimator:UV动画 SpriteSheetAnimator:二维切换动画 ParticleAnimator:粒子动画 PathAnimator:路径动画 这几种动画都有各自的特点及应用场景,一般而在3D游戏中应用得最广泛的是骨骼动画,因为骨骼动画是人物动画的核心,我们下半段会专门详解这个动画: 动画简介 核心

layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结二

一.角色序列帧.ani动画的制作 1.在项目管理器中创建动画文件 2.创建动画模板,编辑动效名称 3.编辑序列帧动画 .ani格式动画的代码控制 1.动画加载loadAnmition() 2.播放与停止.动效模板切换 3.动画帧位置控制 4.动画播放完成事件 uui截图: Laya.init(1334, 750); Laya.loader.load(["res/comp.atlas","res/role.atlas"],Laya.Handler.create(thi

[寒江孤叶丶的Cocos2d-x之旅_39]Cocos骨骼动画功能解密

原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 原创文章,首发地址:http://www.cocos.com/cocos/dynamic/2015/0908/82.html 在游戏中,人物的各种动作是必不可少,一般实现人物动作的方式有两种,序列帧动画或骨骼动画.Cocos在更新到2.x版本之后,便没有了骨骼动画的功能,使得开发者非常困扰.终于在本次更新中,Cocos编辑器将骨骼动画添加

CocosCreator入门(七) ------ 资源(骨骼动画)

骨骼动画资源(Spine) https://docs.cocos.com/creator/manual/zh/asset-workflow/spine.html Creator v2.2.0 及以上支持 Spine v3.7). 骨骼动画所需资源有: .json 骨骼数据 .png 图集纹理 .txt/.atlas 图集数据 骨骼动画资源(DragonBones) https://docs.cocos.com/creator/manual/zh/asset-workflow/dragonbone

【v2.x OGE教程 11】 动画编辑器帮助文档

[v2.x OGE教程 11] 动画编辑器帮助文档 版本号 日期 作者 说明 1.0 2014-9-3 橙子游戏 文档创建       一.简单介绍 动画编辑器用于游戏动画的可视化编辑,支持序列帧动画和关键帧动画.通过解析生成的数据文件就可以获取动画信息,并能随时调整,以降低开发工作量.提高开发效率. 二.相关概念 1. 帧 帧是动画在某个时间点的状态.一系列的帧组成了动画的时间线.动画播放时.通过帧的切换,实现动画效果 2. 序列帧 序列帧组成序列帧动画,这样的动画中.仅通过静态图片的切换来实

cocos2dx骨骼动画Armature源码分析(二)

flash中数据与xml中数据关系 上篇博文从总体上介绍了cocos2dx自带的骨骼动画,这篇介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). skeleton节点 1 <skeleton name="Dragon" frameRate="24" version="2.2"> name:flash文件名字. frameRate:flash帧率. version:dragonbones

关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项

1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/anchor_lb/spineboy"); 2.用getComponent()方法找到相应骨骼动画节点的骨骼动画组件,并把这个对象赋值给一个var出来的新对象. 具体代码:var ske_anim_comp = spineboy_anim.getComponent(sp.Skeleton); 3.把第二点的新

骨骼动画具体解释

转载:http://blog.csdn.net/ccx1234/article/details/6641944 近期,再次研究其骨骼动画,发现这篇文章讲的相当不错,通俗易懂,非常好的学习资源. 骨骼蒙皮动画(Skinned Mesh)的原理解析(一) 一)3D模型动画基本原理和分类 3D模型动画的基本原理是让模型中各顶点的位置随时间变化.主要种类有Morph动画,关节动画和骨骼蒙皮动画(Skinned Mesh).从动画数据的角度来说,三者一般都採用关键帧技术,即仅仅给出关键帧的数据,其它帧的数

cocos2dx 2.2.1 骨骼动画使用

使用骨骼动画: // 加载资源文件 png 图片,plist 文件和 ExportJson 动画文件,一般而言可以在场景运行之初加载此资源 CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("resTest/Hero/Hero.ExportJson"); CCArmature* _pArrmature = CCArmature::create("Hero"); _pA