Box2D是一款免费的开源二维物理引擎,由Erin Catto使用
C++编写并在zlib授权下发布。它被广泛应用于多个平台的游戏开发,包括
IPhone、iPad和Android游戏,以及在线Flash游戏。Box2D提供了丰富的物理仿真功能,使开发者能够轻松模拟2D
刚体物体的运动和碰撞行为。Itterheim和Wenderlich介绍了Box2D在Cocos2d iPhone引擎中的使用情况。Adobe Edge新闻通讯中的一篇文章讨论了Box2D在Flash游戏中的使用情况。
Box2D本身采用平台无关的
C++编写,适用于具有C++编译器的所有系统。它可以编译为固定点和浮点模式,并已在
任天堂 DS、Wii、多种移动设备(包括
Android、BlackBerry 10和iOS)以及大多数主要操作系统上使用。Box2D已移植到多种其他
编程语言和环境中,包括Java、
奥多比 Flash(ActionScript和
Haxe)、
C#、Lua、
ECMAScript和D。
Python、
DarkBASIC和
英国广播公司 BASIC也有绑定可供使用。2009年10月30日,宣布Box2D正在集成到较旧的Torque 2D游戏引擎中。
Box2D被许多应用程序和游戏引擎所使用,包括BBC Basic for SDL、BlitzBasic、GameMaker: Studio、LibGDX、Stencyl、
Unity、Construct2、LÖVE、Solar2D、Clickteam Fusion 2.5和Flame(Flutter游戏引擎)。这些应用程序利用Box2D的强大物理引擎来进行游戏开发和照明效果。
Box2D执行约束
刚体模拟,支持由凸多边形、圆形和边缘形状组成的实体。实体通过关节相连,并受到各种力的作用。引擎还会施加重力、
摩擦力和弹性。Box2D的碰撞检测和解决系统由增量扫掠和修剪粗略阶段、连续碰撞检测单元以及稳定的线性时间接触求解器组成。这些算法使得快速实体和大型
堆栈的高效模拟成为可能,同时不会错过碰撞或导致不稳定。
Box2D的早期版本Box2D Lite主要用于教育目的,基于Erin Catto每年在GDC上的系列讲座。Box2D Lite使用了许多与Box2D相同的算法,但功能较少。Chipmunk物理引擎(C编写)和Phys2D(Java编写)都部分基于Box2D Lite。SpriteKit用于
IOS和OS X的物理引擎内部使用了Box2D。LiquidFun物理引擎是
谷歌对Box2D的分支,增加了
流体模拟功能。LibGDX使用了一个Java包装器,围绕原生Box2D代码(
C++编写)作为其物理引擎。