PhysicsJS摩擦行为

时间:2014-05-14 23:22:37

标签: javascript physicsjs

我是physicsjs的新手,正在创建一些测试模拟以熟悉库。

我想模拟在屏幕上滑动的多个盒子,这些盒子都经历不同程度的摩擦。到目前为止,我有3个盒子从屏幕的左边界开始,并且都有一个正方形xvel。我不确定最佳方法是为模拟添加摩擦力。所有3个盒子不应受到摩擦力的相同影响。因此,我需要一些方法将一般摩擦算法应用于所有盒子,但是摩擦量需要取决于它当前作用的盒子。

2 个答案:

答案 0 :(得分:3)

摩擦是内置的(但它不是最好的算法)。

只需使用:

Physics.body('rectangle', {
     width: 40,
     height: 40,
     cof: 0.5, // <-- change the friction. range [0, 1]
     x: ...
     ...
});

答案 1 :(得分:0)

空地摩擦可以通过这种方式完成。无论球在做什么,它都在减速。

它会监听tick事件,然后在每次更新时都会通过摩擦力来降低速度。

```

function applyFriction(obj, friction) {
    // invert it so that 0.1 friction is a multiplication of 0.9 to x.
    // it makes more sense to apply 0.1 as friction that way.
    var value = 1 - friction;
    obj.state.vel.set(obj.state.vel.x * value, obj.state.vel.y * value);
}

// subscribe to the ticker
Physics.util.ticker.on(function (time) {
    applyFriction(ball, 0.1);// apply friction to the ball.
    world.step(time);
});

// start the ticker
Physics.util.ticker.start();

```