Box2d源码学习<一>之Box2d简介
2016-05-16 11:10
841 查看
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8257607
随着智能手机的大量普及,手机的性能也越来越好,伴随而来出现大量的手机游戏 ,其中不乏很多优秀的游戏,如《愤怒的小鸟》、《鳄鱼小玩皮》、《翼飞冲天》等等。同时它们也大量的模拟了现实生活中的相关东西,比如小鸟飞行、碰撞的模拟,流体的模拟,都用到了相关的物理知识,他们的开发团队是怎么做到的呢,我们不得而知,但我们可以通过box2d引擎来实现相应的效果。下面我们就来了解并学习下box2d。
一、学习资料
要学习一件事物,首先要知道它是干什么的,有什么作用,以及它的历史,可以通过它的官网http://www.box2d.org获取相应的解答,还可以从http://www.iforce2d.net/b2dtut/introduction网站上面的一系列的教程,以及它的中文版---阿蕉同学的博客【http://blog.csdn.net/wen294299195/article/details/7930907】和http://ohcoder.com/blog/categories/box2d-tutorials/中获取相应的了解,当然你还可以从互联网上搜索相关的知识。
二、介绍
box2d是一个2d刚体仿真物理引擎,也是目前使用最为广泛的,具有很强的移植性,同时它简洁、跨平台、开源、免费,甚至在c++,Java,c#,JavaScript等很多语言上都有实现。我们主要说的是用c++实现的版本。
box2d可以模拟现实世界物体的物理属性,给用户一种真实感,存在感。该引擎是有英国人Erincatto编写的,并作为每天工作的一部分去维护和完善它。现在经常用于游戏框架中的物理引擎部分,像iphone上有名的开源框架cocos2d就是用的此物理引擎,以及最近很火的跨平台引擎cocos2d-x也是用的它作为物理引擎。
三、源码结构
Box2D由三个模块组成:公用(Common),碰撞(Collision)以及动力学(Dynamics)。公用模块包括内存分配,数学库,设置。碰撞模块定义了形状,broad-phase算法,碰撞的功能/查询。最后动力学模块提供了模拟物理世界,物体,定制器(fixtures),以及连接器。下面是三者的关系图。
四、其它
用过cocos2d、或者cocos2d-x的coder应该清楚,其上述两个引擎还提供了另一个物理引擎Chipmunk,下面我们就来比较一下这两者之间的差异:
1、box2d是用c++写的,而Chipmunk用的是c
2、box2d变量和方法使用全称命名,而Chipmunk很多地方使用一个字母的简写
3、box2d使用类【class】,具有很强的封装物体性,而Chipmunk使用结构体【struct】,暴露了过多的细节给外部
4、box2d有针对快速移动直接穿透而不进行碰撞测试的解决方法。而Chipmunk针对object-c有个叫SpaceManager接口,可以很容易的添加精灵到刚体上。
好了,不都说了,相信大家对box2d有了一定了解了。下一篇开始我们正式学习源码。
随着智能手机的大量普及,手机的性能也越来越好,伴随而来出现大量的手机游戏 ,其中不乏很多优秀的游戏,如《愤怒的小鸟》、《鳄鱼小玩皮》、《翼飞冲天》等等。同时它们也大量的模拟了现实生活中的相关东西,比如小鸟飞行、碰撞的模拟,流体的模拟,都用到了相关的物理知识,他们的开发团队是怎么做到的呢,我们不得而知,但我们可以通过box2d引擎来实现相应的效果。下面我们就来了解并学习下box2d。
一、学习资料
要学习一件事物,首先要知道它是干什么的,有什么作用,以及它的历史,可以通过它的官网http://www.box2d.org获取相应的解答,还可以从http://www.iforce2d.net/b2dtut/introduction网站上面的一系列的教程,以及它的中文版---阿蕉同学的博客【http://blog.csdn.net/wen294299195/article/details/7930907】和http://ohcoder.com/blog/categories/box2d-tutorials/中获取相应的了解,当然你还可以从互联网上搜索相关的知识。
二、介绍
box2d是一个2d刚体仿真物理引擎,也是目前使用最为广泛的,具有很强的移植性,同时它简洁、跨平台、开源、免费,甚至在c++,Java,c#,JavaScript等很多语言上都有实现。我们主要说的是用c++实现的版本。
box2d可以模拟现实世界物体的物理属性,给用户一种真实感,存在感。该引擎是有英国人Erincatto编写的,并作为每天工作的一部分去维护和完善它。现在经常用于游戏框架中的物理引擎部分,像iphone上有名的开源框架cocos2d就是用的此物理引擎,以及最近很火的跨平台引擎cocos2d-x也是用的它作为物理引擎。
三、源码结构
Box2D由三个模块组成:公用(Common),碰撞(Collision)以及动力学(Dynamics)。公用模块包括内存分配,数学库,设置。碰撞模块定义了形状,broad-phase算法,碰撞的功能/查询。最后动力学模块提供了模拟物理世界,物体,定制器(fixtures),以及连接器。下面是三者的关系图。
四、其它
用过cocos2d、或者cocos2d-x的coder应该清楚,其上述两个引擎还提供了另一个物理引擎Chipmunk,下面我们就来比较一下这两者之间的差异:
1、box2d是用c++写的,而Chipmunk用的是c
2、box2d变量和方法使用全称命名,而Chipmunk很多地方使用一个字母的简写
3、box2d使用类【class】,具有很强的封装物体性,而Chipmunk使用结构体【struct】,暴露了过多的细节给外部
4、box2d有针对快速移动直接穿透而不进行碰撞测试的解决方法。而Chipmunk针对object-c有个叫SpaceManager接口,可以很容易的添加精灵到刚体上。
好了,不都说了,相信大家对box2d有了一定了解了。下一篇开始我们正式学习源码。
相关文章推荐
- Android控件的两次及多次点击事件
- linux下如何查看某个软件 是否安装??? 安装路径在哪???
- ARM平台基于嵌入式Linux部署ROS
- CentOS 下JDK安装
- Servlet 中文乱码问题及解决方案剖析
- 【原创】C#模拟Post请求,正文为json数据的代码参考
- python中的break和continue
- Android ActionBar使用教程
- 缓存穿透、缓存并发、缓存失效之思路变迁
- 机器学习中分类评估方法简介 - 1
- 梯度下降法和反向传导法
- HDU2328 Corporate Identity
- iOS 获取手机验证码
- tornado
- linux 基本命令
- memcpy的用法总结
- Android DataBinding
- 如何用PS制作GIF动画图 PS制作GIF动画图文教程
- Java调用Hive的操作
- 求购ODA源码 拿来学习,谢谢