第七章主要介绍 api。
# Box2D api
# Box2D 分类
Box2D 所有的 api 可参照Box2D_api (opens new window)。
可发现,Box2D 具体分为三大类:
- 碰撞类(collision):碰撞模块定义了形状,broad-phase 算法,碰撞的功能/查询
- 基础类(common):包括基础系统配置、数据类型、基础数学运算
- 动力学类(dynamics):包括模拟物理世界,刚体(body),接触管理(contacts),以及关节(joint)
具体的说明是个人整理的,有些参照网上资源,可能不完整且有偏差。
# common
# math
b2Vec2
:二维向量b2Mat22
:一个由两个 b2Vec2 组成的 2*2 方阵,可直接由两个 b2Vec2(col1、col2)构造或者由一个角度值构造b2Math
:基本数学运算,如向量和矩阵的计算、产生随机数等
# bsSettings
bsSettings
:基础系统配置,如 pi 的值、每秒的时间、每米的大小、睡眠时间等等
# collisions
# shapes 形状定义
b2ShapeDef
:形状定义- b2ShapeDef 为形状定义
- type 来表示形状类型
- localPosition 来表示当前位置
- localRotation 来表示当前角度
- friction、density、restitution 来表示摩擦力、密度、弹性系数
- categoryBits 和 maskBits 来表示碰撞位及位标识(可以用来过滤一些碰撞)
- groupIndex 来表示组号,这个组号可以用来过滤还比位标识优先
b2CircleDef
:圆形- 继承于 b2ShapeDef
- type 为 e_circleShape
- 带有一个类型为 float32 的量 radius 来表示半径值
b2BoxDef
:矩形- 继承于 b2ShapeDef
- type 为 e_ boxShape
- 带有一个类型为 b2Vec2 的量 extents 来表示区域值
b2PolyDef
:凸多边形- 继承于 b2ShapeDef
- type 为 e_ polyShape
- 带有一个类型为 b2Vec2 的数组 vertices 来表示顶点
- 带有一个 int32 型的量 vertexCount 来表示顶点数,目前顶点数最多支持 8 个
# 碰撞的功能/查询
b2AABB
:AABB 坐标- 盒子,由两个向量组成,一个为 minVertex 是最小顶点,另一个为 maxVertex 是最大顶点,通过这两个顶点来表示最为普通的 AABB 框
b2OBB
:OBB 坐标b2ContactID
:接触 IDb2ContactPoint
:接触点
# broad-phase 算法
b2BroadPhase
:通过使用动态树降低了管理数据方面的开销,极大的降低了调用 narrow-phase 算法的次数
# dynamics
# 刚体
b2BodyDef
:- 刚体定义结构
- userData 来表示用户数据
- shapes 来表示形状队列,目前形状数最大支持 64 个
- position 来表示当前位置
- rotation 来表示当前角度
- linearVelocity 表示线速度
- angularVelocity 来表示角速度
- linearDamping 来表示线性阻尼
- angularDamping 来表示角阻抗
- allowSleep 来表示是否可以允许休眠
- isSleeping 来表示是否正在休眠
- preventRotation 来表示是否防止旋转
- 支持方法:AddShape(b2ShapeDef* shape)
b2CollisionFilters
:- 碰撞过滤是用来防止形状与形状之间进行碰撞的,可以用碰撞种类和组名来区别
- Box2D 总共提供 16 种碰撞种类,每个形状都可以提定属于什么种类,那么它就可以和其他不同种类的形状碰撞
# 结点(joints)
b2DistanceJoint
:距离连接b2DistanceJointDef
:距离连接定义b2GearJoint
:齿轮连接b2GearJointDef
:齿轮连接定义b2Joint
:连接基类b2JointDef
:连接定义基类b2JointEdge
:用于组合刚体或连接到一起.刚体相当于节点,而连接相当于边b2MouseJoint
:鼠标连接b2MouseJointDef
:鼠标连接定义b2PrismaticJoint
:移动连接b2PrismaticJointDef
:移动连接定义b2PulleyJoint
:滑轮连接b2PulleyJointDef
:滑轮连接定义b2RevoluteJoint
:旋转连接b2RevoluteJointDef
:旋转连接定义
# 接触管理(contacts)
b2Contact
:管理两个外形接触b2ContactEdge
:接触边用来连接多个物体和接触到一个接触表(物体是一个节点而接触相当于一个接触边)b2ContactResult
:记录接触结果