Box2D 是一个用于游戏的 2D 刚体仿真库。程序员可以在他们的游戏里使用它,它可以使物体的运动更加可信,让世界看起来更具交互性。从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让牛顿来做导演。
Box2D 是用可移植的 C++ 来写成的。因此也可以通过Android NDK 将它引用到Android 平台,从而也可以在Android平台使用Box2D引擎来编写游戏。
这里介绍的是基于AndEngine的Box2D库的扩展,它就是通过NDK将Box2D C++函数通过JNI实现了对应的Java 接口。源码可以从http://code.google.com/p/andengine/ 下载,或是从本地下载 (210MM 包括所有源码及示例)。
src 目录提供了Box2D的Java接口,主要是通过调用native Box2D C++函数库来实现。NDK最常见的用法是将一些C/C++函数库移植到Java平台,而不是直接用来写Android应用。
这是使用Box2D函数库实现的一个实例PhysicsRevoluteJointExample,源码在上面tar包中。性能相当不错。
可以参考其中Android.mk 文件的内容。
后面将专门介绍AndEngine开发包,如果你对写手机游戏感兴趣的话,请留意我们的博客。