首页 > 软件开发 > HTML >

如何在html5中Cocos2d-x中整合LiquidFun

来源:互联网 2023-03-16 19:08:19 版权归原作者所有,如有侵权,请联系我们

Cocos千万级手游的摇篮,一直致力于让尤其开发变得更快捷,高效,我们今天来介绍一下如何在html5中Cocos2d-x中整合LiquidFun。ADl办公区 - 实用经验教程分享!

如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

方法/步骤

  • 1

    LiquidFun是谷歌基于原本的Box2D改造的,可以生成带有流体物理性质粒子的一个扩展库。Ricardo利用这个LiquidFun,将它整合到了Cocos2d-x3.0中,做成了2个Demo,使我们可以直接生成带有流体物理性质的粒子。ADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 2

    下面这段话摘自LiquidFun的官网地址:ADl办公区 - 实用经验教程分享!

    通过基于Box2D的功能,LiquidFun实现了一个可以模拟流体的粒子特效。游戏开发者可以在他们的游戏中通过使用它来实现游戏中的力学,或者逼真的物理特效。游戏设计者则可以通过这些库来设计出精彩的流体互动的游戏体验。ADl办公区 - 实用经验教程分享!

  • 3

    通过上面这段话可以看出,本质上LiquidFun是一个在Box2D之上追加的一个扩展,它通过使用粒子系统来实现模拟流体粒子的效果。你可以通过下载安装安卓上的LiquidFun-Testbed和LiquidFun-EyeCandy来测试它。ADl办公区 - 实用经验教程分享!

  • 4

    Cocos2d-x已经整合了Box2D,为了整合LiquidFun,我们需要先把一个新的类整合进来:b2ParticleSystemADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 4该信息未经授权抓取自百度经验
  • 5

    LiquidFun中的b2ParticleSystemADl办公区 - 实用经验教程分享!

    为了合并整合,我们需要一个能够懂得如何渲染b2ParticleSysytem的Cocos2d-xNode。b2ParticleSysytem提供以下4个有用的方法:ADl办公区 - 实用经验教程分享!

  • 6

    理想情况下我们本应该通过重用cocos2d::ParticleSystemQuad来做上面提到的渲染,但是因为以下几个原因这样做是行不通的:ADl办公区 - 实用经验教程分享!

    cocos2d::ParticleSystemQuad不支持改变它的吸引子(这是一个设计上的缺陷,之后我们会修复它。)这种情况下应该用一个空的吸引子。ADl办公区 - 实用经验教程分享!

  • 7

    ParticleSystemQuad是通过Quads来实现的,而不是Points。尽管Cocos2d-x是支持Points的(如Cocos2d-xv1.0,它依旧没有办法正常工作因为Points和colors应该在一个交错的数组中。ADl办公区 - 实用经验教程分享!

    另一个问题便是Box2D和Cocos2d-x之前的坐标系转换问题,不过这个问题可以很容易解决ADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 8

    Pointsvs.QuadsADl办公区 - 实用经验教程分享!

    使用Points的主要缺点在于,你没有办法旋转一个Points,这也正是我们在Cocos2d-x上不使用它的原因。ADl办公区 - 实用经验教程分享!

  • 9

    但是Points也有很多优势,它跟Quads比起来只需要更少的内存,这意味着它可以运行的更快。下面举一些使用Point的与Quads不同的情况:ADl办公区 - 实用经验教程分享!

    Point的坐标只需要一个点(Quads需要4个)ADl办公区 - 实用经验教程分享!

    Point只需要1种颜色(Quads需要4个)ADl办公区 - 实用经验教程分享!

    Point不需要使用UV坐标(Quads需要)ADl办公区 - 实用经验教程分享!

    Point如果你需要使用不同的大小的时候,你可能要传一个浮点型的数组。(Quads不需要)ADl办公区 - 实用经验教程分享!

    Point在做碰撞检测的时候会消耗比Quads更少的资源。ADl办公区 - 实用经验教程分享!

    值得注意的是LiquidFun的目的在于模拟流体。因此在流体的情况下,你是不需要去考虑粒子的旋转的,所以LiquidFun在这里选择了内存消耗更小的PointsADl办公区 - 实用经验教程分享!

  • 10

    通过GL_POINTS绘图ADl办公区 - 实用经验教程分享!

    在OpenGL/OpenGLES中可以通过GL_POINTS来绘制Points,不过它有以下几个确定的限制:ADl办公区 - 实用经验教程分享!

    它没有办法旋转(就像上面说的那样)ADl办公区 - 实用经验教程分享!

    如果你通过gl_PointSize放大或者缩小粒子,你没有办法单独放大或缩小X轴和Y轴的大小,它们只能同时被放大或缩小。ADl办公区 - 实用经验教程分享!

    Points也可以使用纹理,但是你没有办法改变他的U-V坐标,无论你用的是一整张纹理还是什么都不使用。ADl办公区 - 实用经验教程分享!

  • 11

    如果你以前从没使用过GL_POINTS,你可以通过下面的代码来看看它什么样的:ADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 12

    将Box2d坐标转换成Cocos2d-x坐标系Cocos2d-xv3.0需要将ModelView模型传递给draw()方法。我们所要做的便是将它转换成Box2D坐标系统中能用的坐标。下面的代码便是我们所需要做的:ADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 13

    通过gl_PointSize来转换大小ADl办公区 - 实用经验教程分享!

    我们要做的另一件事便是上面所没有讲到的,如何根据“世界”大小来放大缩小Points。下面的代码将会展示:ADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 14

    通过gl_PointCoord来生成纹理坐标ADl办公区 - 实用经验教程分享!

    最后要做的事情,就是给粒子附上纹理,否则我们将没法看到任何东西。上面提到过,你不能直接把UV坐标传递给Points。因此,这里我们将使用一个叫做gl_POINTS的预定义变量。如下:ADl办公区 - 实用经验教程分享!

    如何在html5中Cocos2d-x中整合LiquidFunADl办公区 - 实用经验教程分享!

  • 15

    以上!便是所有的过程!ADl办公区 - 实用经验教程分享!

    在第二部分,我会介绍如何将LiquidFun整合到Cocos2d-x在Win32和VisualStudio的环境中。待会我会介绍如何使用更漂亮的"metaball/blob"来渲染模拟水的特效。ADl办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!ADl办公区 - 实用经验教程分享!


    标签: HTML

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号