《《Android游戏编程之从零开始》第七章样章》.pdf
文本预览下载声明
Box2D 概述
7.1
Box2D 是一款用于 2D 游戏的物理引擎。在 Box2D 物理世界里,创建出的每个物体都更
接近于真实世界中的物体,让游戏中的物体运动起来更加真实可信,让游戏世界看起来更具交
互性。
Android 平台常见的十几款游戏引擎中,例如:Rokon 、AndEngine 、libgdx 等物理引擎都
封装了 Box2D 物理引擎,可见 Box2D 在物理引擎中占据了多重要的位置。
Box2D 在很多平台都有对应的版本:Flash 版本、Iphone 版本、Java 版本(JBox2D )等等,
在本书中开发 Android 语言采用的是 Java ,所以这里介绍的对应 Box2D 平台也是 Java 平台,
称为 JBox2D ,对应的版本为 JBox2d 2.0 。
7.2 将 Box2D 类库导入 Android 项目中
添加 Box2D 类库到 Android 项目详细步骤如下:
新建项目“HelloBox2d”(创建 Android 项目与之前创建项目步骤无差异)。
然后在项目里添加一个“lib”目录用于存放 Box2D 类库(“.jar”)。
右键项目“HelloBox2d”,选 中“New”→ “Folder”选项,然后出现“New Folder”窗口,如
图 7-1 所示。
图 7-1 New Folder
图7-1 所示的窗口中,在“Folder name ”文本框中填写目录名,这个目录名可以自定义,一
般导入外部类库目录都使用 lib 与 libs 来命名,然后单击“Finish ”按钮完成目录的创建。
此时只是将 Box2D 提供的类库放入 Android 项目中,但是并没有添加到项目的类库中,
所以还需要将 Box2D 包添加到项目类库中!
右 击 项 目 “ HelloBox2d ” 选 中“ Properties ” → “ Java Build Path ” → “ Libraries ” → “ Add
JARs...” ,选 中“HelloBox2d”项目下 lib 目录下的Jbox2d 类库的 jar 包,最后一直单击
“OK”按钮返回即可,如图 7-2、图 7-3 所示。
图 7-2 项目配置
图 7-3 项目中添加 Box2d 类库
到此,在 Android 项目中添加 JBox2D 物理引擎类库的步骤就结束了,现在就开始进入
Box2D 引擎的物理世界吧!
7.3 物理世界与手机屏幕坐标系之间的关系
本节来讲解一下物理世界与手机屏幕坐标系之间的关系。假设创建一个 200 米的物理世
界,然后观察其物理世界与手机屏幕之间的坐标系关系,如图 7-4 所示。
图 7-4 物理世界与手机屏幕坐标系关系图
7-4 0,0
从图 中可以很清晰的看出,手机屏幕的左上角 ( )坐标,正是物理世界的中心点坐标;
手机屏幕绘制图形时,一般默认以左上角作为锚点!而在 Box2d 的物理世界中,一个新的Body (物
体)等被创建出来之后,默认以其质心 (可以近似为中心点)作为锚点;如图 7-5 所示,是“在屏
幕上绘制一张图片,并且在物理世界中添加一个物体”的位置关系图。
图 7-5 默认放置的位置对比图
除此之外,Box2D 为了使物体与关节等更加贴切的模拟现实,在 Box2D 引擎中使用的长
m Box2D
度单位是“米 ( )”,所以 引擎中的一些方法的长度参数不再是以像素为单位,而
是需要转换成“米”;反之,从 Box2D 引擎函数返回值中得到的长度值也是以“米”做单位
的,使用其值前需要将其转换为像素,然后再使用。
关于米与像素之间的换算关系,其实是通过自定义一个现实与屏幕的比例关系进行换算
的,后续章节
显示全部