Box2Dを使用して、ユーザーがオブジェクトをドラッグし、事前定義された場所に「固定」できる小さな世界をシミュレートしています(基本的には特定の位置に「ロック」します)。
オブジェクトをある位置にロックするためのこのコードがあります。SetPosition(またはSetTransform)を機能させることができないことを除いて、すべてが機能します。オブジェクトを(0,0)に移動するだけです。
参考までに、世界はEaselJSを使用して描画されます。
// checks if mouse is dragging the object nearby one of the containers
if( isWithin(mouseX, mouseY, containers) ) {
// make object 'straight'
body.SetAngularVelocity(0);
body.SetAngle(0);
// makes the object a kinetic body
body.SetType(b2Body.b2_kineticBody);
// doesn't work. it always moves the object to (0,0)
body.SetPosition(5,5); // I am using (5,5) for simplicity
// it should have the coordinates of the center of the container
// alternative: (also doesn't work)
//body.SetTransform(b2Vec2(5,5), body.GetAngle());
}
私は何が間違っているのですか?