需要Matter.js计算力

时间:2016-03-06 12:49:38

标签: javascript vector matter.js

我试图对一个物体施加一个力。让它以我的鼠标位置相对于对象生成的角度移动。

我有角度

 targetAngle = Matter.Vector.angle(myBody.pos, mouse.position);

现在我需要施加一个力,让身体沿着这个角度移动。 对于applyForce方法,我在下面的值中添加了什么?

  // applyForce(body, position, force)

  Body.applyForce(myBody, {
    x : ??, y : ??
  },{
    x:??, y: ?? // how do I derive this force??
  });

我在这里放入x和y值以使身体沿着鼠标和身体之间的角度移动。

2 个答案:

答案 0 :(得分:3)

要施加力以沿该方向移动物体,您需要以弧度为单位取角度的正弦和余弦。您只想将对象的位置作为第一个向量传递,以便不应用扭矩(旋转)。

var targetAngle = Matter.Vector.angle(myBody.pos, mouse.position);
var force = 10;

Body.applyForce(myBody, myBody.position, {
  x: cos(targetAngle) * force, 
  y: sin(targetAngle) * force
});

如果您需要,applyForce()上的文档为here

(我知道这个问题已经过时了,我或多或少会为那些偶然发现它的人做这件事)

答案 1 :(得分:0)

您可以依赖Matter.Vector模块并使用它来减去,规范化和乘以位置向量:

var force = 10;
var deltaVector = Matter.Vector.sub(mouse.position, myBody.position);
var normalizedDelta = Matter.Vector.normalise(vector);
var forceVector = Matter.Vector.mult(deltaVector, 10);
Body.applyForce(myBody, myBody.position, forceVector);