Box2D

Box2D

Box2D

Box2D是一款免费的开源二维物理引擎,由Erin Catto使用C++编写并在zlib授权下发布[0]。它被广泛应用于多个平台的游戏开发,包括iPhone、iPad和Android游戏,以及在线Flash游戏。Box2D提供了丰富的物理仿真功能,使开发者能够轻松模拟2D刚体物体的运动和碰撞行为。Itterheim和Wenderlich介绍了Box2D在Cocos2d iPhone引擎中的使用情况。Adobe Edge新闻通讯中的一篇文章讨论了Box2D在Flash游戏中的使用情况。Box2D本身采用平台无关的C++编写,适用于具有C++编译器的所有系统。它可以编译为固定点和浮点模式,并已在Nintendo DS、Wii、多种移动设备(包括Android、BlackBerry 10和iOS)以及大多数主要操作系统上使用。Box2D已移植到多种其他编程语言和环境中,包括Java、Adobe Flash(ActionScript和Haxe)、C#、Lua、JavaScript和D。Python、DarkBASIC和BBC BASIC也有绑定可供使用。2009年10月30日,宣布Box2D正在集成到较旧的Torque 2D游戏引擎中[1]。

Box2D是一款免费的开源二维物理引擎,由Erin Catto使用C++编写并在zlib授权下发布[1]。它被广泛应用于多个平台的游戏开发,包括iPhone、iPad和Android游戏,以及在线Flash游戏。Box2D提供了丰富的物理仿真功能,使开发者能够轻松模拟2D刚体物体的运动和碰撞行为。Itterheim和Wenderlich介绍了Box2D在Cocos2d iPhone引擎中的使用情况。Adobe Edge新闻通讯中的一篇文章讨论了Box2D在Flash游戏中的使用情况。

基本介绍

Box2D本身采用平台无关的C++编写,适用于具有C++编译器的所有系统。它可以编译为固定点和浮点模式,并已在Nintendo DS、Wii、多种移动设备(包括Android、BlackBerry 10和iOS)以及大多数主要操作系统上使用。Box2D已移植到多种其他编程语言和环境中,包括Java、Adobe Flash(ActionScript和Haxe)、C#、Lua、JavaScript和D。PythonDarkBASICBBC BASIC也有绑定可供使用。2009年10月30日,宣布Box2D正在集成到较旧的Torque 2D游戏引擎中[2]

Box2D被许多应用程序和游戏引擎所使用,包括BBC Basic for SDL、BlitzBasic、GameMaker: Studio、LibGDX、Stencyl、Unity、Construct2、LÖVE、Solar2D、Clickteam Fusion 2.5和Flame(Flutter游戏引擎)。这些应用程序利用Box2D的强大物理引擎来进行游戏开发和照明效果。

发展历史

Box2D最初作为演示引擎随Erin Catto在GDC 2006上的物理演讲一同发布。

2007年9月11日,Box2D作为开源项目在SourceForge上发布。

2010年1月17日,该项目迁至Google Code托管。

2015年7月12日,Box2D再次迁移至GitHub

2008年3月6日,Box2D发布了2.0版本,引入了连续碰撞检测并改进了API。

2020年7月27日,Box2D推出了2.4版本,其中最显著的变化是许可证变更为MIT许可证。

特色

Box2D执行约束刚体模拟,支持由凸多边形、圆形和边缘形状组成的实体。实体通过关节相连,并受到各种力的作用。引擎还会施加重力、摩擦力和弹性。Box2D的碰撞检测和解决系统由增量扫掠和修剪粗略阶段、连续碰撞检测单元以及稳定的线性时间接触求解器组成。这些算法使得快速实体和大型堆栈的高效模拟成为可能,同时不会错过碰撞或导致不稳定[3]

相关引擎

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++编写)作为其物理引擎。

参考资料 3

  1. box2d教程 — 简书
  2. 推荐:Box2D - 强大的2D物理引擎,为游戏开发赋予生命 — CSDN博客
  3. Box2D一:基础知识 — 博客园
广告位:底部(ad-bottom)—— 请到中台「公共区块」编辑此内容