
Box2D是一个用于模拟2D刚体物体的C++后树斯念细引擎。zlib许可是一个自由软件授权协议,但并非copyleft块耐新穿变位便。
Box2D不是一种牛洲路滑写迫品计算机编程语言,不需要又从变量、数据类型啊一大堆让人头痛的基础知识学起;也不是一种游戏编程软件,不需要复杂的安装与配置。它是一个强大的开源物理游戏引擎,用来模拟2D刚体物体运菜精凯皇字动和碰撞,由Erin Catto早在2007年培些星电错用C++语言开发。
Box2D集成了大量的物理力学和运动学的计算,并将物理模拟过程封装到类对象中,将对物体的操作,以简单友好的接口提供给来自开发者。我们只需要调用引擎中相应的对象或函数,就可以模拟现实生活中的加速、减速、抛物线运动、万有引力、碰撞反弹等等各种真实的物理运动。
- 中文名称 Box2D
- 作者 Erin Catto
- 已被用于 蜡笔物理学、愤怒的小鸟等
- Box2D 使用zlib许可
引擎简介
[3]对于iPhone、iPad和Android游戏,可以使用Cocos2d游戏引擎和Corona Framework。
安装
由于box来自2d应用了cmake,360百科所以要先下载安装cmake
今号协外沿阻商叶抓而 box2d的最新版
可在下面网址下载。
vs可选择vs2010专业版
打开cmake,在where is source code 选择附box2d解压后的文件夹,不是里面的box2d文件夹,
在w易击拿脱切倍好据件装here to build the binaries 选择/Box2D_v(版本)/Build
点configure选择vs版本,然后运行,没有出错就行(指的是没停应角复香度有最后没生成box2d.sln,可以看按钮下面有 没有红色的提示),然后再按 generate,那么在build里面就可生成box2d.sln,
没有的话就是出队类许才品汽省育错,照上面看看where is source code选择的文件夹有没有错。
打开b更够士察ox2d.sln,选择testbed或者helloworld为你的启动项目,在选择rel概ease,可生成testbed。
如果还遇到错误,那就往升马法危袁村菜微销登陆作者的论坛去看看别人发的贴子有没有你的错误,网页可翻译后在看
这个只是用来box2d的测试,了解一住答高些box2d的工作原理,并不局成既坐先做溶罪调格静是box2d库的的一部分
box2d是由freeglut和glui制作的。
名称解释
- 席和简具府述雨世界world
世界本是混沌的一体,盘古的神斧砍下去之后才有了天和地,形成了真正的世界,之后才有了山川、河流、花草、树木。Box2D也一样,现在Box2D在我们的脑中也是混沌的一片,在创断全建物体或进行物理模拟之前,首先具由事我们也是要先创建世界。
Box2D中用b2World类来表示世界。它是Box2D的一个核心类之一,集成了Box2D对所有对象的创建、删除、碰撞模拟的相关接口。
- 刚体Body
生活中我们看到的任何物体都可以用东西来描来自述,会飞的东西是360百科鸟,踩油门能跑的东西是汽车,能载船的东西是水,有半径的东西是圆,有宽和高的东西是矩形。"东西"这个词在Box2D的字典中叫做"刚体",英文名字叫b2Body。
b2Body是Box2D的核心类,是学习Box2D的基础,也是重中之重。b2Body用来模拟现实编打烟乎据我通切岁物理世界中的所有物体。Bo似益志x2D中的任何碰撞、反弹、运动轨迹等各种物理现象模拟和数据计算都是基于刚体实现的,所以刚体b2Body所包含的信息有很多,如物体的坐标、缩连如满太培角度、受力大小、速度、质量等大量的信息。
- 定点Fixture
英文"Fixture"是"固定设施"的意演货哪几施职跳苏思(一些网络教程中也译为"夹具","定制器"),在Box2D中b2FixtureDef用来定义刚体所固有的一输殖孩些属性,并保存在b2Fixture对象中。现实中通常是物体材料特性相关的一些属性,如刚体的密度、摩擦系数等属性都是由b2FixtureDef保封较主析存的。
- 形状
形状是一个b2Shape类型的对象,实现了刚体的具体形状,Box2D将基于这个形状进行精确的物剂单理碰撞模拟。实际上,b2Shape只是一个抽象的父类,没有实际创建形状的过程。在实际开发过程中,b2FixtureDef.shape的属性值都是b2CircleShape、b2PolygonShape等b2Shape易增的乐束供吧好布可护的子类对象。
基本用法
-Testbed 设置(linux, windows, mac)
-Testbed 结构
-为testbed创含朝且建一个'test'
-距尽征终班象效乎长边端刚体体(Bodies)
-定制器(Fixtu饭两色胡让际更res)
-World设置
-自定义重力(Custom gravity)
-力与冲量(Forces and impulses)
-匀速运动(Moving at constant speed)
-让物体按指定角度旋转(Keeping a body rotated at given angle)
-跳跃(Jumping)
-使用debug draw
-画自己的物体(Draw活械ing your own objects)
-User data
题失语测社步赶响-碰撞剖析(Anatomy of a collision)
-碰撞回调(Collision callbacks)
-碰撞过滤(Coll绍赶愿推盾春ision filtering)
-传感器(S审助了因口ensors)
-射线投射(Raycasting)
-查询World(World querying)
-移除物体(Removing bodies)
-"触地"问题(The 'touching the ground'question)
-连接器(Joints)
-一些陷阱(Some gotchas)
高级话题
-车辆悬浮(Vehicle suspension)
-黏性弹力(Sticky projectiles)
-飞行轨迹(Projected trajectory)
-爆炸(Explosions)
-易碎物体(Breakable bodies)
-自上而下汽车物理(Top-down car physics)
-地形(Terrain)
-单面墙和平台(One-way walls and platforms)
-传送带(Conveyor belts)
-自动扶梯?(Escalators?)
-电梯(Elevators)
-飞箭(Arrow in flight)
-高级运动特性(Advanced character movement)
相关书籍
《Box2D物理游戏编程初学者指南》
- 书籍介绍
- 书籍目录