本系列博客是由扭曲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简介相关推荐

  1. 开源中国源码学习(一)——简介

    前段时间学习了git-osc客户端的源码,感觉收获不少.尽管,代码并未完全吃透,但是,还是尝到了学习源码的甜头. git-osc客户端源码的第一期学习,暂告一段落. git-osc 客户端源码 git ...

  2. Box2d源码学习十四TOI之碰撞时间的实现

    本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8441644 TOI全称Time of Impact,中 ...

  3. Box2d源码学习十三b2Collision之碰撞(下) 具体形状间的碰撞的实现

    本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8441463 Box2d中,要形状间实现碰撞,必须两个碰 ...

  4. Box2d源码学习十二b2Collision之碰撞(上)公共部分的实现

    本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8390560 Box2d中将碰撞部分单独放到几个文件中去 ...

  5. Box2d源码学习二内存管理之SOA的实现

    本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8258166 SOA,全称small object al ...

  6. Box2d源码学习十一GJK之距离的实现

    本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8352227 Box2d中距离是指两个形状最近点之间的距 ...

  7. 基于Qt5.14.2和mingw的Qt源码学习(三) — 元对象系统简介及moc工具是如何保存类属性和方法的

    基于Qt5.14.2和mingw的Qt源码学习(三) - 元对象系统简介及moc工具是如何保存类属性和方法的 一.什么是元对象系统 1.元对象系统目的 2.实现元对象系统的关键 3.元对象系统的其他一 ...

  8. Box2D 源码编译

    Box2D官网:Box2D Box2D源码:Open Source Requiremets: 1.Cmake 2.MinGW 3.Box2D Step 1. 1). 2).点击Configure 出现 ...

  9. Shiro源码学习之二

    接上一篇 Shiro源码学习之一 3.subject.login 进入login public void login(AuthenticationToken token) throws Authent ...

最新文章

  1. 4、NIO--通道的原理和获取
  2. 一個傳統的C2C網站的用戶充值的过程
  3. RHEL 5.4 安装Oracle 11gR2, 安装篇1...
  4. Map集合根据key,value排序
  5. C语言 | 内存对齐03 - 内存对齐的公式
  6. Leetcode每日一题:34find-first-and-last-position-of-element-in-sorted-array(排序数组中查找某元素的两端位置)
  7. [Java][Servlet] Failed to destroy end point associated with ProtocolHandler [http-nio-8080]
  8. 51CTO网友感谢信:昨天以940分的成绩顺利通过NE考试 在此特地感谢网工泡泡
  9. Protel 格式网表转换 Allegro 格式网表的 Skill 程序
  10. ele表单验证的数字的坑
  11. 算法题打卡-超人进化(剑指offer第一天)
  12. 用html做祝福语朋友,朋友关怀祝福语(把祝福语化作露带给你)
  13. 地理信息系统名词解释大全(三)
  14. paddle 基础函数 cosine_decay
  15. Zookeeper 客户端之 Curator
  16. GCF(4)----手机认证相关知识
  17. 盘点EXCEL常用插件工具,第一个就直接让人直呼好家伙,太秀了!
  18. Python将小写字母转化为大写字母
  19. 铁路cj继电器,一种铁路继电器底座锁住方法专利_专利申请于undefined_专利查询 - 天眼查...
  20. 一句Json搞定数组中多层字段的替换

热门文章

  1. 软件工程实践2018第六次作业——现场UML作图
  2. 开店攻略: 现代促销的七种促销策略
  3. SpringBoot 结合 Mybatis 实现创建数据库表
  4. GitHub下载神器,被下架后又复活
  5. 关于不同操作系统下浏览器兼容问题
  6. 读博会改变人的性格吗?
  7. java使用poi读取跨行跨列excel
  8. 大连渤海・黄海潮汐时间表
  9. pptpd mysql_pptpd+freeradius+mysql安装步骤
  10. 远程为华为RH2288V3服务器安装vmware esxi5.1操作系统