cocos2d-x初探学习笔记(20)--物理引擎box2d(2)

原创 2012年02月06日 21:10:37

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

由于box2d的内容比较多,它也有自己的testbed例子,所以关于比较深入的box2d引擎内容,我准备单开一个专题去研究它的testbed例子,当然,是嵌入到我们的cocos2d中的testbed,因为box2d本身就是用C++编写的,所以区别不是很大。

首先看一下box2dtest这个例子,这个例子相对简单


就是可以点击屏幕,在屏幕中生成方块,然后方块之间有碰撞,就这么简单,但是带出了整个cocos2d-x的框架。


第一步当然是构建整个世界,正如上一节所说的,建立重力,通过重力构建生成世界,当然,这也是使用这个引擎new构建为数不多地方,因为有世界才有一切

第二步就是构建地面及墙壁,这里面的做法略有不同,因为要构建一个空心的物体,因此我们不能直接定义,而是分别定义长方体里的四个边。

另外一个需要注意的地方就是我们进行了长度的转换,由于box2d采取的现实世界的米作为计量长度的单位,这里要注意的是长度范围在0.1m10m范围内的物体模拟的效果更好,所以我们要把我们的像素级的长度单位转换为米的单位就要除以PTM_RATIO(定义32像素为1米)。

需要说明的是,这里我对例子进行了修改,例子是以屏幕的中心为锚点,而我,是以原点为锚点的,我觉得这样更好理解。



之后使用批处理精灵类管理所有的盒子,先生成格子的定义,在通过定义生成物体


可以看到类型是动态刚体,另外值得注意的就是用userData这个参数保留了我们的对象,从而完成了对象和刚体的绑定

之后再绑定形状,先生成形状,在通过关联来绑定形状


在初始化方法里调用scheduleUpdate()使得模拟出每个时间步更新,并在update中进行更新,如下图所示。Box2d是通过定期调用step来更新动画的,step的第一个参数是时间步,这里我进行了修改,因为dt会不同,所以不建议用dt来作为时间步,而要给他一个固定的时间步这样才不会显得动画时快时慢,第二个参数是速度迭代次数,推荐8次,超过10次的基本看不出效果的提升,第三个参数是位置迭代,这个1次就行,底下的步骤就是遍历整个世界,找出对应精灵的刚体,进行位置更新就可以了


关于物理引擎的深入研究,我想再开一个系列的文章来单独谈,因为这个的例子写的也很好,对不同类型游戏的开发都很有用

刚开始研究此引擎,如有错误之处,希望大家多多指正

下一篇打算写精灵类的深入研究



版权声明:本文为博主原创文章,未经博主允许不得转载。

cocos2d-x初探学习笔记(29)-cocosBuilder

cocosBuilder编辑器正是作为可视化编辑的补充,成为cocos2D-iphone和cocos2D-x的可视化编辑器,cocos2D-x从2.0版本开始支持cocosBuilder,同样coco...
  • bill_man
  • bill_man
  • 2012年09月15日 10:27
  • 29844

cocos2d-x初探学习笔记(12)--图形绘制

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man Cocos2d-x封装了一些opengl...
  • bill_man
  • bill_man
  • 2012年01月27日 15:42
  • 17771

cocos2d-x初探学习笔记(20)--物理引擎box2d(2)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 由于box2d的内容比较多,它也有自...

cocos2d-x初探学习笔记--物理引擎box2d(1)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 在游戏中我们经常要加入物理碰撞等和物...
  • hayaceo
  • hayaceo
  • 2013年12月23日 16:55
  • 623

cocos2d-x初探学习笔记--物理引擎box2d(2)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 由于box2d的内容比较多,它也有自...
  • hayaceo
  • hayaceo
  • 2013年12月23日 16:46
  • 727

Cocos2d-x学习笔记(十二)—— Box2d物理引擎(未完)

这里讲两个Box2d物理引擎的例子,一个新的cocos2d3.x版本,另一个是旧的2.x版。 关于box2d的基础知识,这里不再详述,详细参考:http://blog.csdn.net/u01370...

Cocos2d-x学习笔记(十五)-------->物理引擎

物理引擎 Cocos2d-x引擎内置了两种物理引擎,它们分别是Box2D和Chipmunk,都是非常优秀的2D物理引擎,而且x引擎将它们都内置在SDK中。Box2D使用较为广泛,在这里选择Box2D...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x初探学习笔记(20)--物理引擎box2d(2)
举报原因:
原因补充:

(最多只允许输入30个字)