2016-03-06 32 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

これは便利ですが、回転は何ですか?彼は方向としてmouseXとmouseYをフィードしたくなかったのですか?また、180の後にセミコロンをいくつか見逃してしまった。これがwikiや例の中にあれば良いだろう。 –

+0

私の悪い、それを指摘してくれてありがとう。 – brennanenanen

+1

あなたの 'theta'変数は' targetAngle'と同じだと思います。ですから、targetAngleを 'cosine()'と 'sine()'関数に渡すことができます。 –

関連する問題