Box2D

{

我们创建好了一个刚体,我们想要知道刚体对应到cocos2d渲染世界里面的位置,那么我们可以在cocos2d渲染世界里面创建一个lable标签或者一个sprite精灵,并放到刚体的位置上面,这样我们就等同于是让刚体可见了。而对于边线、圆之类的刚体形状,我们可以使用一些游戏引擎的绘图API在渲染世界内对应的进行绘制,这样形状也可以看到了。很多时候将这些数据进行可视化会帮助游戏开发者更好的进行物理排错。


作者: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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-11-09 01:54  YZFHKMS-X  阅读(115)  评论(0编辑  收藏  举报