我正在使用 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());
}
我究竟做错了什么?