我一直在physics.js中试验吸引子,在零重力下装配一个简单的物体,在一点上有一个吸引子。这创造了一个巨大的小"重力井",可以在这里看到。
简单的平方向量吸引到一个点,在'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来实现这一点。
-
有可能创建您自己的吸引器行为:请参阅本文档。
-
如果不想这样做,可以将吸引器的选项min设置为多边形的大小,这样当身体位于吸引器的中心时,力就会停止强度和顺序是可选选项,因此不需要指定它们(根据API)。例如,这应该适用于您:
world.add(Physics.behavior("attractor", { min: 200, pos: {"x": 200, "y": 200} }));