2016-03-06 76 views
8

我試圖對對象施加一個力。讓它以我的鼠標位置相對於對象生成的角度移動。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

要施加一個力來移動你的物體朝那個方向移動,你需要以弧度的角度取正弦和餘弦。你只需要傳遞對象的位置作爲第一個不施加扭矩(旋轉)的向量。

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

這是有益的,但什麼是旋轉?他不想以鼠標X和鼠標Y的方向進食。你也錯過了180後的一些分號。如果這是在維基或例子中,那會很好。 –

+0

我的不好,謝謝你指出。 – brennanenanen

+1

我認爲你的'theta'變量和'targetAngle'是一樣的。所以你可以將targetAngle提供給'cosine()'和'sine()'函數。 –