【问题标题】:physics.js attractors, zero gravity and slowing down velocityphysics.js 吸引子,零重力和减慢速度
【发布时间】:2016-03-25 08:18:56
【问题描述】:

我一直在用physics.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 来解决这个问题。

【问题讨论】:

    标签: javascript physics game-physics acceleration physicsjs


    【解决方案1】:
    1. 可以创建自己的吸引子行为:See this documentation

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 2013-09-11
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多