cocos2dx使用CocosBuilder(编辑器)完成基础骨骼动画

2023-10-30

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/cocosbuilder/1061.html

          ☞ 点击订阅 ☜
 本博客最新动态!及时将最新博文通知您!

关于CocosBuilder 已经成为cocos2d、cocos2dx的官方编辑器,主要作用是场景编辑器、新版本中还已经支持了骨骼动画。【对于CocosBuilder Himi最新书籍中也有讲述】

对于骨骼动画,其实类似动作编辑器,将图的切片组成一帧,然后设置时间轴事件(序列动画),[动编里则是将每一帧按照一定的时间进行播放],多的不说了,对于动作编辑器、切片等都不太熟悉的童鞋请自行搜索相关文章吧,下面进行本篇的内容。

     首先声明:最新的cocosbuilder 与 coco2d 、cocos2dx联合发布了新版,所以!对于使用最新的cocos2d-2.1beta3-x-2.1.0  的童鞋,请你下载最新的cocosbuilder 3.0 alpha版本!

cocosbuilder 下载地址: http://cocosbuilder.com/?page_id=11

(细心的童鞋应该知道,Himi博客最下方的“友情链接”里很多有用的地址的说)

下载好最新的3.0 cocosbuilder ,那么请打开它,然后我们进行创建一个骨骼动画吧:

     1.  首先创建一个项目,在cocosbuilder中的菜单一栏选择“File”-“New Project”,如下图:

111QQ201212131

 

 

      2. 继续创建一个我们的骨骼动画的子节点“,选择“FIle”-“New File”,如下图:

QQ20121213-2

选中后进入如下页面:

QQ20121213-3

这里,我们选择CCNode 节点,然后将“Full screen”的勾选去掉,我们不需要全屏。

点击“Create”后,会要求你选择存放目录,这里可能会出现如下提示:

QQ20121213-4

如果出现这个提示是要求你设置配置一些路径,解决方案:

1)配置“File”-“Project Settings…”的路径

2)直接将创建的CCNode放在你创建cocosbuilder目录的Resources目录下即可,如下图:

QQ20121213-5

 

以上步骤创建好后则如下图所示:

QQ20121213-6

这里需要注意的是,当你创建一个Project时,这里默认会有cocosbuilder的例子相关文件:

ccbResources 文件夹、clikme-down.png、clime.png、MainScene.ccb、MainScene.js,

我们将这些都删掉,让童鞋们更容易理解。(删除操作去目录下删除吧)

另外,animated-grossini.plist 以及 animated-grossini.png 是打包好的骨骼碎片,如下图

animated-grossini

对于碎图整理打包,Himi推荐使用TexturePackage (TP),博客最下方有其地址(收费)

3. 当一个plist 、png的资源放入cocosbuilder中,默认此plist文件可以点开,并且对其中的每个碎图进行拖拽,如下图所示:

QQ20121213-7

下面我们就将plist下的每个图都拖拽到“骨骼动画视图”中吧,然后拼成一个小人,如下图:

QQ20121213-1

 

4. OK,继续,我们调整时间轴将其调整到1秒的位置,然后我们选中小人的头部!然后在cocosbuilder的菜单项中选择“Animation”-“Insert KeyFrame”,如下图:

QQ20121213-2

然后调整其切片属性的角度为90度,重复上述的步骤,将时间轴调回到0秒初始时,设置其头部角度为0度,完成后如下图:

QQ20121213-3

童鞋们点击下播放试试效果吧,是不是很嗨皮~有意思吧。

当然你也可以在同一时间让当前帧或者其他切片一些操作例如缩放、平移、透明度、颜色等。

5.下面对整个动画进行整体的调整设置吧:

QQ20121214-1

默认创建的动作都是10秒的周期,利用Set TimeLine Duration设置周期即可。

这里我们再简单设置下动作的名字吧:
选择“Edit TimeLines…”,出现如下界面:

QQ20121214-4

 

TimeLine Name :动作列表(默认名字为:Untitled Timeline  ,这里改成wave)

Duration:完成这个动作所需的时间

Autoplay:是否自动播放

 

需要提醒的是,如下图:

111

   上图中的红色标记是表示“选择当前动作播放完成后,继续播放的下一个动作” 用以完成连贯动作。

6. 最后一步是将编辑好的骨骼动作,编译称cbbi文件吧:

选择cocosbilder菜单栏“FIle”-“Publish”   ,如下图:

QQ20121214-2

然后你将在你的项目文件夹中看到编译后的两个文件夹,“Published-iOS”、“Published-HTML5” 如下图所示:

QQ20121214-3

Published-HTML5给HTML项目用的这里我们看 “Published-iOS”这个文件夹,这个文件夹中除了我们自己的plist与png资源文件外,还有一个编辑出来的切片动作信息文件ccbi文件,main.js也不用管,我们直接将如下三个文件拷贝到我们的cocos2dx项目中并且添加到项目中:

animated-grossini.plist、animated-grossini.png、TestAni.ccbi

下面我们来书写使用代码段吧,直接上代码了,比较简单:

先导入头文件:

1
2
#include "cocos-ext.h"
using namespace cocos2d::extension;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//----------------CocosBuilder 骨骼动画----------------
/* 创建一个自动释放的 Node 加载库 */
CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
 
/* 创建一个 CCBReader,并设置自动释放 */
cocos2d::extension::CCBReader * ccbReader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
ccbReader->autorelease();
 
/*读取一个ccbi的文件,生成一个CCNode实例*/
CCNode *animationsTest = ccbReader->readNodeGraphFromFile( "TestAni.ccbi" , this );
//设置坐标
animationsTest->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width*0.5,260));
if (animationsTest != NULL) {
     this ->addChild(animationsTest);
}
1
 

以上代码注释的比较清楚了,是从ccbi文件中将我们创建的骨骼动画解析读取出来,然后返回一个CCNode对象

下面我们让其进行动画的播放:

1
2
/ / 播放一个动作 : 根据动作名称进行播放
     ccbReader - > getAnimationManager ( ) - > runAnimationsForSequenceNamed ( "wave" ) ;

以上的ccbReader是我们通过ccbi读取获取到的一个实例对象,这里放置了我们编辑所有动画序列,所有动作,另外当我们ccbi中有N个动作的话,那么这N个动作的下标默认:0,1,2,3,4,5….n-1

因此我们还可以利用动作下标进行播放动作:

1
ccbReader->getAnimationManager()->runAnimationsForSequenceIdTweenDuration(0, 0.3f);

这里Himi也顺便将动作的名字、周期时间、下标都打印出来供大家参考:

1
2
3
4
5
6
7
8
9
10
11
//获取所有的动作序列
CCArray* allSeq = ccbReader->getAnimationManager()->getSequences();
 
for ( int i=0; i<allSeq->count(); i++) {
     //获取到每一个Seq
     CCBSequence* everySeq = (CCBSequence*)allSeq->objectAtIndex(i);
     //获取每个序列动作周期、名字以及id
     everySeq->getDuration();
     everySeq->getName();
     everySeq->getSequenceId();
}

OK,基本上比较easy,下面是运行效果图与源码和资源下载地址:

资源与项目下载地址:   http://vdisk.weibo.com/s/kCT5z

 

IMG_1847

 

IMG_1848

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocos2dx使用CocosBuilder(编辑器)完成基础骨骼动画 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet

随机推荐

  • unity制作UI显示

    unity制作UI显示 创建Canvas 在Hierarchy中 右键UI gt Image 配置 在Inspector中配置 Render Mode Screen Space Overlay 勾选Pixel Perfect Canvas
  • IIS配置反向代理

    访问路径作为条件匹配 入站规则 配置模式 upload 配置url 重写 http localhost 9000 R 2 以域名为条件匹配 入站匹配规则 任意 条件 添加 HTTP HOST 选择与模式匹配 模式正则 www abc com
  • 6个高级Python技巧

    前言 Python是一种面向对象的语言 它与英语非常相似 因此对于初学者来说是一种非常好的语言 它的高级特性和受支持的库包甚至可以用几行代码来编写复杂的任务 在本文中 我们将介绍python的一些高级特性 掌握这些特性可以让你的编程更加顺畅
  • Linux: android studio AVD emulator启动不了

    前置条件 目前我台式机电脑的情况是 OS Slackware Linux 14 1显卡 NVidia 独立显卡 用于 GPU计算 Intel i3 集成显卡 用于连接 43寸液晶显示器 今天安装当前最新版本的 android studio
  • 创建型模式 - 单例模式

    核心 严谨起见 私有构造必须要加 避免外部创建新的实例 特性 单例类只能有一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 常用的几种单例模式写法 懒汉方式 双重锁方式 静态类方式 每种方式对应的特性 方式
  • endnote 参考文献加序号_EndNote使用教程(基础)

    写在前面 公众号内左侧第一栏里面有下载链接 可按需下载 声明 本公众号所有软件资源均来自互联网 仅限学习技术交流 不得用于商业用途 请于下载后的24小时内删除 如需体验更多乐趣 请支持正版 你是否对以下情景感到眼熟 想快速插入参考文献 想快
  • Spring+SpringMVC+Mybatis SSM框架详解

    一 JDBC编程 1 JDBC 简介 JDBC其实就是 Java 官方提供的一套规范 接口 用于帮助开发人员快速实现不同关系型数据库的连接 程序运行的时候 数据都是在内存中的 当程序终止的时候 通常都需要将数据保存到磁盘上 无论是保存到本地
  • chatgpt赋能python:简单好玩的Python程序——让你爱上编程

    简单好玩的Python程序 让你爱上编程 Python语言在最近的几年迅速崛起成为最流行的编程语言之一 它的语法简单易懂 代码可读性强 是初学者学习编程的极佳选择 今天我想分享一些简单好玩的Python程序 让你体验Python编程的乐趣
  • 电信运营商走在云时代:从“基础联接”到“万物智联”

    从语音通话业务到互联网业务再到云计算业务 从 光改 奔向 云改 中国的运营商们正在实现基础连接到万物智联的跨越 作者 斗斗 编辑 皮爷 出品 产业家 日新月异的技术创新 为电信运营商带来了持续不断的行业变革 短短几年光景 随着移动互联网的迅
  • 【HTML+CSS+JavaScript】实现鼠标点击烟花效果

    文章目录 HTML CSS JavaScript 实现鼠标点击烟花效果 爆炸型 心型 圆形 一 效果图 二 鼠标点击烟花效果 心型实现代码 1 HTML部分代码 2 CSS部分代码 3 内部的JavaScript部分代码 三 鼠标点击烟花效
  • 伸缩自如的ElasticSearch——ElasticSearch-sql安装及使用

    文章目录 安装ElasticSearch sql 安装es sql site 安装ElasticSearch sql 安装地址 ES sql地址 注意安装版本要与ES版本一致 这里是6 7 1 安装完成后 解压 将解压后的文件夹放入ES的p
  • 【DirectX11学习01】用一个类封装DirectX的初始化

    DirectX的初始化步骤较为繁琐 这里将DX的初始化扔进类的初始化 构造函数 里 如果构造函数里还要执行其他逻辑 那就最好把D3D的初始化扔进一个内联函数 这样能够更好地区分逻辑 下次要使用的时候 就直接继承该类 然后在这基础上写自己的东
  • 软件测试c语言代码_软件测试理论知多少?

    有源医疗器械很多都是带有软件的 今天一起了解下软件测试理论 软件测试目的 软件测试定义 软件测试原则 软件测试分类 软件测试方法 测试基本流程 软件测试定义 软件测试 英语 software testing 描述一种用来促进鉴定软件的正确性
  • CVPR 2018值得一看的25篇论文,都在这里了

    作者丨李光睿 学校丨重庆大学本科在读 研究方向丨计算机视觉 Unsupervised Person Image Synthesis in Arbitrary Poses Image Synthesis CVPR 2018 Spotlight
  • 排序算法之奇偶排序

    排序算法之奇偶排序 奇偶排序的基本思想就是先对奇数列进行一趟排序 比较奇数列和其相邻的偶数列的元素 如果逆序则交换 再对偶数列进行一趟排序 比较偶数列和其相邻的奇数列的元素 如果逆序则交换 接着对奇数列进行排序 再对偶数列进行排序 重复进行
  • windows7linux双系统,win7下安装Linux实现双系统全教程

    经过大半天的摸索与实验终于在自己的电脑上成功的装上了Win7和Linux的双系统 现在我把详细的流程给大家分享了 希望有兴趣的可以去试试 下面为大家介绍win7下安装Linux实现双系统全攻略 材料 工具 4G的U盘 Linux系统 软碟通
  • 计算机wifi无法打开,教你win10系统WiFi热点无法打开的修复教程

    最近有windows10系统用户反馈 遇到了WiFi热点无法打开的问题 打开WIFI热点我们可将我们电脑的网络共享给手机 使我们的手机能够节省一些流量 怎么办呢 就此问题 接下来小编教你win10系统WiFi热点无法打开的修复教程 很多wi
  • C# 给自己写的软件,加注册码功能

    由于永和的项目里边用到了这个功能 因此在网上找到了 直接贴过来 复用一下 为自己写的程序加一个注册功能吧 生成的机器号是根据CPU和硬盘号来的 根据自己的需求改成是否是随机生成 代码直接粘贴到新建类覆盖原代码就能直接用了 using Sys
  • 探索IP地址的应用

    无论是互联网行业还是传统行业都会用到网络 作为企业如何维护网络安全 保障网站不被攻击 数据不被泄露等 这个时候我们就会通查询IP归属地 辅助企业解决安全问题 下面介绍一下ip归属地在各行业的具体应用 1 网安行业 应用一 提升企业网络资产检
  • cocos2dx使用CocosBuilder(编辑器)完成基础骨骼动画

    转载自 黑米GameDev街区 原文链接 http www himigame com cocosbuilder 1061 html 点击订阅 本博客最新动态 及时将最新博文通知您 关于CocosBuilder 已经成为cocos2d coc