【CocosCreator入门】CocosCreator组件 | DragonBones(骨骼动画)组件

news/2024/5/18 14:17:46 标签: typescript, 游戏程序, CocosCreator, 游戏引擎, 动画

        Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中DragonBones,它可以帮助您创建出色的2D骨骼动画。在本文中,我们将探讨CocosCreator引擎的DragonBones组件,以及如何使用它来创建精美的动画


目录

一、组件属性 

二、组件使用 

三、挂点生成

四、Spine组件和DragonBones组件不同点


一、组件属性 

属性功能说明
Dragon Asset骨骼信息数据,包含了骨骼信息(绑定骨骼动作,slots,渲染顺序,attachments,皮肤等等)和动画,但不持有任何状态。
多个 ArmatureDisplay 可以共用相同的骨骼数据。
可拖拽 DragonBones 导出的骨骼资源到这里
Dragon Atlas Asset骨骼数据所需的 Atlas Texture 数据。可拖拽 DragonBones 导出的 Atlas 资源到这里
Armature当前使用的 Armature 名称
Animation当前播放的动画名称
Animation Cache Mode渲染模式,默认 REALTIME 模式
1. REALTIME 模式,实时运算,支持 DragonBones 所有的功能
2. SHARED_CACHE 模式,将骨骼动画及贴图数据进行缓存并共享,相当于预烘焙骨骼动画。拥有较高性能,但不支持动作融合、动作叠加、骨骼嵌套,只支持动作开始和结束事件。至于内存方面,当创建 N(N>=3) 个相同骨骼、相同动作的动画时,会呈现内存优势。N 值越大,优势越明显。综上 SHARED_CACHE 模式适用于场景动画、特效、副本怪物、NPC 等,能极大提高帧率和降低内存
3. PRIVATE_CACHE 模式,与 SHARED_CACHE 类似,但不共享动画及贴图数据,所以在内存方面没有优势,仅存在性能优势。当想利用缓存模式的高性能,但又存在换装的需求,因此不能共享贴图数据时,那么 PRIVATE_CACHE 就适合你
Time Scale当前骨骼中所有动画的时间缩放率
Play Times播放默认动画的循环次数。
-1 表示使用配置文件中的默认值;
0 表示无限循环;
>0 表示循环次数
Premultiplied Alpha图片是否启用贴图预乘,默认为 True。
当图片的透明区域出现色块时需要关闭该项。
当图片的半透明区域颜色变黑时需要启用该项
Debug Bones是否显示 bone 的 debug 信息
Enable Batch是否开启动画合批,默认关闭。
开启时,能减少 drawcall,适用于大量且简单动画同时播放的情况。
关闭时,drawcall 会上升,但能减少 cpu 的运算负担,适用于复杂的动画

二、组件使用 

        使用CocosCreator的DragonBones组件非常简单。首先,需要在CocosCreator中安装并启用DragonBones插件。然后,可以通过导入DragonBones动画数据文件(例如JSON文件)来创建动画

        以下是一个简单的代码示例,展示如何在CocosCreator中使用DragonBones组件:

// 导入DragonBones动画数据文件
const dragonBonesData = cc.resources.get('dragonbones/animation.json', dragonBones.DragonBonesAsset);
const dragonBonesAtlas = cc.resources.get('dragonbones/texture.json', cc.JsonAsset);
const texture = cc.resources.get('dragonbones/texture.png', cc.Texture2D);

// 创建DragonBones骨骼动画组件
const dragonBonesNode = new cc.Node();
const dragonBonesComponent = dragonBonesNode.addComponent(dragonBones.ArmatureDisplay);

// 设置DragonBones动画资源
dragonBonesComponent.dragonAsset = dragonBonesData;
dragonBonesComponent.dragonAtlasAsset = dragonBonesAtlas;

// 设置DragonBones骨骼节点所用的纹理
dragonBonesComponent._armatureKey = 'Dragon';
dragonBonesComponent._textureAtlasData = dragonBonesAtlas;
dragonBonesComponent._textures.push(texture);

// 播放DragonBones动画
dragonBonesComponent.playAnimation('walk', 0);

        上述代码中,首先使用cc.resources.get()方法导入DragonBones动画数据文件和纹理文件。然后,创建一个新的节点并添加DragonBones骨骼动画组件。接着,将DragonBones动画资源设置为该组件的属性,同时将骨骼节点所用的纹理设置为相应的属性。最后,调用playAnimation()方法来播放指定的动画。此外,DragonBones组件还提供了丰富的事件监听和回调函数,以及高级功能,如动画混合和时间轴控制。

三、挂点生成

        DragonBones组件的挂点方式和Spine组件的挂点生成方式相同,可参照本专栏下,Spine组件介绍的挂点方式

四、Spine组件和DragonBones组件不同点

        Spine组件和DragonBones组件都可以在Cocos Creator中添加到节点上来实现动画效果,它们的区别主要在以下几个方面:

  • 动画编辑工具不同:Spine使用Spine编辑器进行骨骼动画制作,而DragonBones使用DragonBones Pro或者DragonBones Flash插件进行骨骼动画制作。
  • 功能特点不同:Spine相对来说更加精简,适合制作简单的动画;而DragonBones功能更加丰富,支持各种复杂的动画和自定义功能。
  • 导入方式不同:Spine可以直接将导出的.json文件导入到Cocos Creator项目中,并使用Spine组件进行操作;而DragonBones需要先将导出的骨骼动画数据打包成.dbbin格式,然后再通过DragonBones组件使用。
  • 性能表现不同:在性能方面,Spine相对于DragonBones更加轻量级,所以在移动端设备上的表现可能更好。
     

        总之,DragonBones是CocosCreator引擎中不可或缺的组件之一,它为用户提供了快速、轻松地创建和管理骨骼动画的方法。无论是初学者还是有经验的开发人员,都可以通过使用DragonBones组件来为他们的游戏或应用程序添加生动、吸引人的动画效果。 


http://www.niftyadmin.cn/n/217662.html

相关文章

优秀的前端页面 :制定可用性和用户体验策略

制定可用性和用户体验策略是设计优秀前端页面的重要步骤。以下是一些关键要点: 1. 设计易用界面 界面应该简单、易于理解和导航。用户可以快速找到他们需要的信息,而不会感到迷失或困惑。此外,界面应该根据用户需求,提供有意义的…

001+limou+2023/2/16+时间空间复杂度

0、数据结构的学习推荐书籍 (1)《小黑的漫画算法》简单看一下 (2)《大话数据结构》 (3)《数据结构(C语言版)》 1、时间复杂度和空间复杂度 (1)时间复杂度、…

D. Many Perfect Squares

题目链接:Problem - D - Codeforces 题意:给你一个数组,大小不超过50个。 问你让他们全部加上一个x,构造出来最多能够有多少个完全平方数。 思路: 先对数组排个序,首先它最少一定是有一个的&#xff0c…

Maven基础介绍

文章目录Maven概述一、Maven是什么?二、Maven的生命周期三、Maven的标准工程结构四、Maven的生命周期总结Maven概述 一、Maven是什么? Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。它负责管理项目开发过程…

「C/C++」代码命名规范

目录说明文件命名规则函数命名规则类型命名规则常量与宏命名变量命名规则说明 代码命名必须易于阅读和维护,在表达出意思的基础上命名越简洁越好,那么形成规范就尤为重要,以下为一些常用命名法: 驼峰命名法(CamelCase&…

TTL反相器、OC门、TS门、推挽输出、开漏输出

TTL反相器 这是一个TTL反相器,这是经过了很多工程师多种设计最终沉淀出来的电路,这个电路是比较成熟的。我们只需要对这个电路进行解析即可,不需要再去研究当初是如何设计出来的。 学过CMOS应该知道,右侧的输出级其实也是个推挽输…

图的遍历-DFS与BFS

图的遍历-DFS与BFS 绪论一.用vector存储图 + dfs二,用vector存储图 + bfs三.用数组模拟邻接表存储图 + dfs四.用数组模拟邻接表存储图 + bfs绪论 有个问题:什么时候需要记录该点是否已经遍历过? 1.先说结论: D F S DFS DFS不需要记录该点是否已经遍历过 但是你需要知道的是, …

【产品设计】电商后台系统设计--商品管理

电商后台产品,涉及众多模块,而以商品、订单、库存,为核心模块,模块之间存在大量交互。本文将总结最基础、最核心的商品管理。 对电商公司来讲,最核心最难做的有三部分:商品、订单、库存。商品与店铺、营销、…