物理引擎基础入门:Box2D 实战指南
1. 恢复系数与基础物体创建
恢复系数是物理模拟中的一个重要概念,它决定了物体在碰撞后的反弹程度。恢复系数越高,物体就越“有弹性”。当恢复系数接近 0 时,物体在碰撞中几乎不反弹,会损失大部分动量,这种碰撞被称为非弹性碰撞;而当恢复系数接近 1 时,物体能保留大部分动量,反弹速度与碰撞前几乎相同,这就是弹性碰撞。
在创建物体时,我们以创建地板为例。首先,定义物体的形状为 b2PolygonShape
对象,使用其 SetAsBox()
方法将多边形设置为以父物体原点为中心的盒子。该方法接受盒子的半宽和半高作为参数。以下是创建地板的代码:
function createFloor() {
var bodyDef = new b2BodyDef;
bodyDef.type = b2Body.b2_staticBody;
bodyDef.position.x = 0;
bodyDef.position.y = 0;
var fixtureDef = new b2FixtureDef;
fixtureDef.density = 1.0;
fixtureDef.friction = 0.5;
fixtureDef.restitution = 0.3;
var shape = new b2PolygonShape;
shape.SetAsBox(320 / scale, 10 / scale);
fixtureDef.shape = sh