之前看过一个APEngine,一个轻量级的ActionScript物理模拟引擎,包括碰撞检测、摩擦力、牵引力、物体刚性、重力的模拟。APE的结构很简单,几种Particle加入Group,World里只可以加入Group,然后通过enterFrame事件检测物体运动和碰撞。但是APE有一个缺陷就是,无法模拟多边形物体的随机碰撞。即:所有物体碰撞后的运动是正常的,但是没有角度变化,如多个正方形物体碰撞,在APE里展现的这几个正方形是没有角度变化的。
box2d是改自C/C++的物理引擎,结构比APE复杂很多,也包括各种随机多边形的碰撞,有角度变化。因为box2d没有帮助文档,所以最近一直在阅读box2d的代码,把一些有用的东西记录下来。
====================
我并不认为box2d库的作者的ActionScript编码风格很好,第一方法名第一个字母大写可能在C里面是这样的,但是AS里一般是小写的;第二变量定义经常放在整个类的结尾处,也不符合习惯。
Box2D.Common.Math.b2Vec2
Box2D里最基本的向量单位,包含两个变量x,y
IsVaild() 检测x,y这两个变量是否合法,就是用b2Math.b2IsValid()检测x,y这两个变量是否合法,b2Math.b2IsValid()就是用IsFinite()检测这两个数值是否有限.
Make(x_:Number, y_:Number)返回一个现有b2Vec2的克隆
MulM(A:b2Mat22)和一个2*2矩阵相乘,b2Mat22是一个包含2个b2Vec2的矩阵
Box2D.Collision.b2AABB
在初始化整个b2World之前需要设置的一个约束类,用于约束整个b2World内的各种形状,是初始化b2World的一个参数。
box2d是改自C/C++的物理引擎,结构比APE复杂很多,也包括各种随机多边形的碰撞,有角度变化。因为box2d没有帮助文档,所以最近一直在阅读box2d的代码,把一些有用的东西记录下来。
====================
我并不认为box2d库的作者的ActionScript编码风格很好,第一方法名第一个字母大写可能在C里面是这样的,但是AS里一般是小写的;第二变量定义经常放在整个类的结尾处,也不符合习惯。
Box2D.Common.Math.b2Vec2
Box2D里最基本的向量单位,包含两个变量x,y
IsVaild() 检测x,y这两个变量是否合法,就是用b2Math.b2IsValid()检测x,y这两个变量是否合法,b2Math.b2IsValid()就是用IsFinite()检测这两个数值是否有限.
Make(x_:Number, y_:Number)返回一个现有b2Vec2的克隆
MulM(A:b2Mat22)和一个2*2矩阵相乘,b2Mat22是一个包含2个b2Vec2的矩阵
Box2D.Collision.b2AABB
在初始化整个b2World之前需要设置的一个约束类,用于约束整个b2World内的各种形状,是初始化b2World的一个参数。
回复Comments
作者:
{commentrecontent}