最近在学egret游戏引擎,他们推荐的第三方物理引擎库是p2.js,瑞士的一个杀马特开发的,中文资料很少,于是我就把他github项目的wiki给翻译出来了,这里是项目地址:https://github.com/schteppe/p2.js/wiki
大家觉得错了或者不够好,就来github完善这个中文wiki吧 https://github.com/schteppe/p2.js/wiki/Chinese-wiki-%E4%B8%AD%E6%96%87%E7%BB%B4%E5%9F%BA
六个月前,我参加英语六级考试,388分
p2.js内容导航
-
Equations方程式
欢迎使用p2.js手册。这篇手册的目的在于覆盖p2.js API文档中没有提及的知识点,点击进入API文档地址。
使用p2框架前,你必须懂得基础的物理学概念,比如质量、力、扭力和推力。否则,你只能先上谷歌和维基百科了。由于p2.js是基于javascript语言编写的,显然你还得有js的编程能力。
如果你有问题反馈的话,请发帖。
Core concepts核心概念
Shape(形状),一个几何形状,可以是矩形、圆形等等。
Body(刚体),它是一块无限坚硬的物体。因此,在这块物体上任何两点之间的距离都被认为是固定的。Body(刚体)有自己的参数用来规定位置、质量和速度等,刚体的形状是由Shape创建的形状确定的。
Constraint(约束),constraint 是一个物理连接件,用来控制刚体的自由度。在3d世界,物体有6个自由度(3个平移坐标和3个旋转坐标)。在2d世界,物体只有3个自由度(2个平移坐标和1个旋转坐标)。众所周知,人类世界是3d的,因此我们家里的门本来应该是有6个自由度的,但是由于门的一侧被门铰链固定在墙上,它失去了另外5个自由度,只能照着门铰链这个轴旋转了。门铰链就相当于一个constraint(约束)。
Contact constraint(接触约束),这是一个特别的约束,作用在于防止刚体之间的渗透重叠,并且它可以模拟摩擦和弹性。你无须创建这个约束,系统会自动创建它的。
World(世界),这就是一个模拟的物理世界,所有的刚体和约束创建后都要放进来。
Solver(求解器),物理世界的solver(求解器)专门用于处理约束情况。
Units(单位),就是用来测量长度、时间等等数量的单位。在p2.js中,我们用 meters-kilogram-second (MKS) 为单位,用弧度作为角度单位。不要用像素做单位哦。
Hello p2.js!
接下来我们开始建一个简单的物理世界,只用一个动态的圆形和一个静态的平面就好了。搞起来:
var world = new p2.World({
gravity:[0,-9.82]
});
这就是一个简单的世界实例了,并且我们把这个世界的重力设置为了9.82,也就是在y轴的负半轴方向。
现在,我们就来创建一个圆形刚体吧。
var circleBody = new p2.Body({
mass:5,
position:[0,10]
});
这样,我们就在 x=0, y=10 的位置上创建了一个5kg的刚体了,不过它暂时还没有形状,因此我们得给它添加一个形状。
var circleShape = new p2.Circle