我试图对一个物体施加一个力。让它以我的鼠标位置相对于对象生成的角度移动。
我有角度
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值以使身体沿着鼠标和身体之间的角度移动。
答案 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);