动画编辑器和骨骼动画使用
admin
2023-02-11 11:20:08
0

动画编辑器


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


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("播放完成");
  });





相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...