physics.js吸引子,零重力和减慢速度

时间:2015-12-18 15:18:08

标签: javascript physics game-physics acceleration physicsjs

我一直在物理学中试验吸引子.js,在零重力下装配一个简单的物体,在某一点上有一个吸引子。这创造了一个伟大的小重力井'可以看出here

简单方形向量在'x':200,'y':200处朝向一个点吸引,然后围绕它进行轨道运动。我正在寻找一种方法将这个吸引器变成更多的重力井,以便吸引它的物体随着时间的推移而减速并最终在吸引点处静止并静止,直到它与再次拖动鼠标。这有可能吗?

目前,该对象是使用:

创建的
 var bodies = [Physics.body('convex-polygon', {
  // place the center of the square at (0, 0)
  x: 150,
  treatment : 'dynamic',
  cof: 0.01,
  mass : 1,
  y: 100,
  vertices: [
    { x: 0, y: 0 },
    { x: 0, y: 200 },
    { x: 200, y: 200 },
    { x: 200, y: 0 }
  ]
})];

因此创建了吸引子:

var attractor = Physics.behavior('attractor', {
    order: 0,
    strength: 0.0005
}).applyTo(bodies);

attractor.position({'x':200,'y':200});

影响吸引力的强度似乎没有帮助,它只会改变吸引力和随后轨道的速度。

我正在寻找一种方法,实际上是为整个空间增加摩擦力,我认为这样可以自然地减慢物体的速度,使其在吸引点处静止不动。不知道如何使用PhysicsJS来解决这个问题。

1 个答案:

答案 0 :(得分:0)

  1. 可以创建自己的Attractor-Behavior:See this documentation

  2. 如果您不想这样,可以将吸引子的 min 选项设置为多边形的大小,这样当身体位于中心时,力就会停止吸引者强度和顺序是可选选项,因此您无需指定它们(According to the API)。例如,这应该适合您:

    world.add(Physics.behavior("attractor", {
        min: 200,
        pos: {"x": 200, "y": 200}
    }));