Box2D
{
作者:babybus_newapp
链接:https://www.jianshu.com/p/7681431618ec
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
}
一、什么是Box2D
Box2D是一个强大的开源物理游戏引擎,用来模拟2D刚体物体运动和碰撞,由Erin Catto早在2007年用C++语言开发。
Box2D集成了大量的物理力学和运动学的计算,并将物理模拟过程封装到类对象中,将对物体的操作,以简单友好的接口提供给开发者。我们只需要调用引擎中相应的对象或函数,就可以模拟现实生活中的加速、减速、抛物线运动、万有引力、碰撞反弹等等各种真实的物理运动。(引用百度百科)
简单的说,Box2D就是一个物理刚体仿真库。
二、如何学习使用Box2D
Box2D是一个独立的引擎框架,它的作用是帮助游戏开发者进行一些复杂的物理模拟运算,但是很多情况下它是作为某些游戏引擎的一个子模块存在的。所以,我们可以借助一些游戏引擎来进行学习。对于iPhone、iPad和Android游戏,可以使用Cocos2d游戏引擎和Corona Framework。
关于原生Box2D的学习资料,网络上面是多如牛毛,博客的话在CSDN和博客园上面都有。书籍方面也有诸如《Box2D物理游戏编程初学者指南》之类的东西。至于这些教程写的到底好不好,这也只能仁者见仁,智者见智了。(反正我没看)
我主要是基于bbframework框架开发游戏应用的时候使用到了这款出色的物理引擎,所以本文就在bbframework上进行介绍。
使用的工具:
- Sublime Text
- quick-x-player
关于bbframework(简称:bb),它是基于quick-cocos2d-x框架的一个再封装框架,其核心应该可以说是cocos2d-Lua引擎(或者cocos2d-X)。而cocos2d其本身并不支持box2d物理引擎(cocos2d-JS除外),所以目前在lua上的box2d接口都是公司通过lua绑定将原生的C++接口绑定到lua上的。(难免有些API和C++原生不太一样)
三、基本概念
Box2D物理引擎里面的所有类名都是以“b2”作为前缀的,以下是几个比较重要的类。
1、世界(b2World)
物理世界只是一个抽象的概念,可以将其理解成是一个盒子,盒子里面放的是各种个样的数学模型和物理模型(或者说就是N多的数学公式和物理公式),所有的物理模拟都在这个盒子内完成。
物理世界和cocos2d的渲染世界不同,渲染世界由场景、层和精灵等组成,在游戏运行时,渲染世界是可以看见(渲染显示)、可以摸到(绑定触摸事件)真实存在的。而物理世界的一切就跟万物的灵魂一样,看不见也摸不着,都是默默在后台运行的一些数据片段。
万物都是因为混沌初开,世界形成才存在的。同样,要使用物理引擎里面的东西,一切也都要从创建世界开始。代码如下:
作者:babybus_newapp
链接:https://www.jianshu.com/p/7681431618ec
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。