大家好,相信许多朋友们都听过或玩过《捕鱼达人》这款游戏。今年7月中旬,《捕鱼达人3》正式发布,24小时就突破实现1千万下载,欢迎大家一起来下载试玩!

本次《捕鱼达人3》采用了Cocos2d-x 3.x版本中的3D功能来进行开发,实现了完全的3D化。作为一款支撑了无数2D游戏产品的引擎,Cocos2d-x本次也将带来3D方面的功能扩展,帮助广大Cocos2d-x开发者快速进入3D游戏产品的研发时代。

下面,我们就以《捕鱼达人3》作为案例,讲解一下如何使用Cocos2d-x 3.2来实现其中的3D技术。

在进行3D游戏的开发时,模型的加载和骨骼动画的播放是最基础也是最重要的工作内容。在《捕鱼达人3》中,每一条鱼都是美术师在3ds max或maya等3D建模软件中进行模型和骨骼动画的建立,最终导出为通用的模型文件格式.fbx。并通过Cocos2d-x所附带的转换工具fbx-conv.exe将它转换为可以加载到Cocos2d-x中进行显示和播放的文件格式。这个文件格式有两种类型,一个是c3t,即文本格式的模型文件,另一个是c3b,即二进制格式的模型文件。

在使用Cocos2d-x进行2D游戏的开发时,我们最常用的一个类是Sprite,即“图片精灵”,对于精灵的动画操作,只需要精灵调用相应的 Action就可以了。 为方便快速地进行3D游戏的开发,Cocos2d-x引擎也提供了相应的3D的精灵类和播放骨骼动画的Action,下面我们用《捕鱼达人3》中的乌龟模型来演示一下这个过程:

首先,打开Cocos2d-x 3.x,拷贝一份ccp-empty-test设为当前项目,然后我们在Class目录中建立一个基于Layer派生出的层用于我们的演示,这里我们将其命名为FishLayer。

我们在这个层里加入相应的精灵成员和相应的动作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//这是用于显示3D鱼模型的层
class FishLayer : public cocos2d::Layer
{
    public:
    //初始化当前层
        virtual bool init();  
        CREATE_FUNC(FishLayer);
         
    protected:
    //鱼精灵
        cocos2d::Sprite3D*_sprite;
    //向前游的动作
        cocos2d::Animate3D*_swim;
    //受伤的动作
        cocos2d::Animate3D*_hurt;
};

然后,我们在层的初始化函数中加入精灵的创建代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
bool FishLayer::init()
{
    //加载模型文件
    std::string fileName = "tortoise.c3b";
    _sprite = Sprite3D::create(fileName);
    _sprite->setScale(0.1f);
    auto s = Director::getInstance()->getWinSize();
    _sprite->setPosition(Vec2(s.width * 4.f / 5.f, s.height / 2.f));
    addChild(_sprite);
    //获取骨骼动画信息
    auto animation = Animation3D::create(fileName);
    if (animation)
    {
        //从起始到1.933秒截取为游泳动作
        _swim = Animate3D::create(animation, 0.f, 1.933f);
        _swim->retain();
        //从1.933秒到2.8秒截取为受伤的动作
        _hurt = Animate3D::create(animation, 1.933f, 2.8f);
        _hurt->retain();
        //让精灵循环播放游泳和的受伤动作
        Sequence*pSequence = Sequence::create(_swim,_hurt,NULL);
        _sprite->runAction(RepeatForever::create(pSequence));
    }
    return true;
}

我们将模型资源tortoise.c3b和用到的贴图tortoise.png以及背景图Sea.jpg放到资源目录下,运行程序,这时就可以看到乌龟显示在屏幕中了,它向前游动一下后会播放受伤的动作,这样不停的循环。

这样,我们就使用Cocos2d-x进行了3D模型的加载显示,是不是很简单呢?

本节教程DEMO:第一节 加载鱼的模型和播放动画.rar

下一节,我们将学习如何为鱼身上增加波纹,增强鱼在水下的真实感。

有对Cocos引擎3D技术感兴趣的X-Men,欢迎联系官方团队,参与探讨并获取技术支持。技术交流邮箱:lvlong@chukong-inc.com。

用《捕鱼达人3》讲解Cocos引擎3D技术(一):加载鱼的模型和播放动画相关推荐

  1. bim webgl 模型 轻量化_WebGL轻量化BIM引擎如何加载大体量BIM模型

    当前,国内的BIM应用如火如荼!在前几年住建部.交通部.铁总及各个省市住建厅推出各类鼓励BIM应用的政策后,湖南省强制推进的BIM审图更是为BIM应用添加了一把火! 不论BIM当前在国内推进的过程中是 ...

  2. 虚幻引擎之使用LoadClass加载蓝图类

    虚幻引擎之使用LoadClass加载蓝图类 文章目录 虚幻引擎之使用LoadClass加载蓝图类 一.前言 二.探究 2.1 LoadClass 2.2 HashObject 参考文章 一.前言 看序 ...

  3. 基于Unreal引擎的大地形加载研究

    UWA从去年开始进入Unreal引擎的学习,并且从去年底开始发表了一系列关于Unreal引擎使用方面的技术文章.但是,今天的这篇文章与以往的功能介绍不太一样,我们想通过一个实际的案例来让你对Unrea ...

  4. Cocos实战案例:高手解析《捕鱼达人3》怎样玩3D

    在不久前结束的Cocos2015春季开发者大会上,现场演示的由Cocos引擎开发的3D游戏在开发者中获得了不错的反响.目前开始有少部分人尝试使用Cocos进行高阶的操作以实现3D功能,实际上,用Coc ...

  5. Cocos实战案例:高手解析《捕鱼达人3》怎样玩3D VR

    在不久前结束的Cocos 2015开发者大会(春季)上,现场演示的由cocos引擎开发的3D游戏在开发者中获得了不错的反响.目前开始有少部分人尝试使用cocos进行高阶的操作以实现3D VR功能,实际 ...

  6. [Cocos Creator] 本地文件加载系列六:本地龙骨动画dragonbones加载(web模式)

    [Cocos Creator] 本地文件加载系列一:本地文件读取(web模式) [Cocos Creator] 本地文件加载系列二:本地音频文件播放(web模式) [Cocos Creator] 本地 ...

  7. Cesium - 转换obj模型为3D Tiles 并加载

    先下一个工具:此工具要有nodejs才能用: https://github.com/PrincessGod/objTo3d-tiles: 再下一个:链接:https://blog.csdn.net/j ...

  8. Cocos Creator2.4.8 资源加载源码阅读

    最近用到资源加载的问题:加载的资源进度条倒退问题,现在只是用临时的解决方案 - 加载进度如果出现会倒退的问题还是用原来的数值.抽时间看了下cocos creator 资源加载的源码,整理了一下脑图 一 ...

  9. cocos creator 2.4.6 加载json文件 初始化游戏 - 初学者

    注意:所有的资源都必须放在 assets/resources  目录或子目录下 ,才能通过 cc.loader.loadRes()加载进来  1: 在assets 目录下创建 resources文件夹 ...

最新文章

  1. seq2seq中的beam search算法过程
  2. hdp xiazia
  3. javaee后台适合用的编辑器插件
  4. C语言试题七十一之请编写函数求出这个数的阶乘
  5. 天气预报为什么要用超级计算机,为什么天气预报不够准确?
  6. mysql 时间2039_Apollo使用MySQL时用关键字作为表名报错
  7. Ubuntu 11.04 下安装配置 JDK 7
  8. 挣脱浏览器的束缚(6) - AJAX也跨域名
  9. MATLAB小数取整
  10. eBay月入五万以上大卖家请进,解决你的提现和结汇问题!
  11. Freesurfer学习笔记——Introduction to Freesurfer Output(输出简介)
  12. c++代码实现我的世界
  13. 计算机《职业资格证书》可以免考高等教育自考的 计算机应用基础吗?
  14. 省市区三级行政区代码(包含港澳台)sql2
  15. HR 开发技术(abap 转载)
  16. 开心网与新浪微博的app授权页的几点比较
  17. 通达OA 一用户登陆精灵却不能用即时通讯功能的异常情况处理(图文)
  18. 你没看错,浩辰3D软件中CAD图纸与3D模型高效转化这么好用!
  19. HTTP下载文件校验失败原因分析与解决
  20. 安装电脑管家小团队版领取超值代金券~

热门文章

  1. python+pytest接口自动化(1)-接口测试基础
  2. 层层递进,天九集团卢俊卿解读抱团时代
  3. BI 和 AI 都有 I,是一回事吗?
  4. STM32操作访问flash,包括写入数据到flash和从flash读取数据
  5. 谷歌官方回应:我们没有放弃TensorFlow,未来与JAX并肩发展
  6. Pepper中级教程:第二章 如何将Python程序部署到机器人内部运行
  7. Arduino全彩LED跑马灯实验
  8. Anaconda操作
  9. 财务软件应用的领域非常广泛
  10. 学编程可以培养编程思维,而编程思维是什么?解读IT入门知识