【发布时间】:2011-06-06 14:39:55
【问题描述】:
最近,我通过结合 Processing.js 和 Box2D.js 库来制作一些基于浏览器的简洁模拟,从而加深了我对 Javascript 的了解。
根据我目前的想法,我试图让用户单击并拖动一个形状,然后在释放鼠标后让它放下。到目前为止,我已经能够弄清楚如何使用 b2MouseJoint 对象来操纵具有 mouseX/mouseY 坐标的主体,但它并不能完全发挥作用。
单击形状时发生的所有事情就是它被固定并围绕单击时当前的 mouseX/mouseY 点旋转。
void mousePressed(){
for(int i = 0; i < circles.size(); i++){
//Get body objects from ArrayList
var obj = circles[i];
// Retrieve shapes from body
var innerShape = obj.GetShapeList();
var rad = innerShape.m_radius;
// Create mouseJoint and add attributes
var mouseJoint = new b2MouseJointDef();
mouseJoint.body1 = world.GetGroundBody();
// Detect body
if(dist(mouseX,mouseY,obj.m_position.x,obj.m_position.y) < rad){
Vec2 p = new b2Vec2(mouseX,mouseY);
mouseJoint.body2 = obj;
mouseJoint.target = p;
mouseJoint.maxForce = 10000.0f * obj.GetMass();
mouseJoint.collideConnected = true;
mouseJoint.dampingRatio = 0;
mouseJoint.frequencyHz = 100;
world.CreateJoint(mouseJoint);
}
}
}
所以基本上我的问题是,如何编写,以便在我按住鼠标时身体/形状跟随鼠标的坐标,而不是仅仅将形状固定到位。
干杯
【问题讨论】:
标签: javascript physics processing box2d