Недавно я расширил свои знания Javascript, объединив библиотеки Processing.js и Box2D.js, чтобы сделать некоторые аккуратные браузерные симуляции.
Исходя из моей текущей идеи, я пытаюсь позволить пользователю щелкнуть и перетащить фигуру, а затем отпустить ее после отпускания мыши.До сих пор мне удавалось выяснить, как использовать объект b2MouseJoint для манипулирования телом с помощью координат mouseX / mouseY, но он не совсем работает в полной мере.
Все, что происходит, когда фигуращелчок - это закреплено и вращается вокруг того, какая точка мышиX / 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);
}
}
}
Итак, в основном мой вопрос, как это можно записать так, чтобы Body / Shape следовал моемукоординаты мыши, пока я удерживаю мышь, вместо того, чтобы просто закрепить форму на месте.
Приветствия