Box2D机身动态转动枢轴点动态?

时间:2016-10-31 13:43:43

标签: libgdx geometry box2d physics game-physics

在libGDX Box2D中,我有一个DynamicBody " body" 和StaticBody " anchor" 以及来自& #34;枢轴关节点" ,身体可以转动"枢轴点" 并完美地工作(位置2)。

enter image description here

Body body = Box2DUtil.addRectangle(BodyDef.BodyType.DynamicBody);  
Body anchor = Box2DUtil.addRectangle(BodyDef.BodyType.StaticBody);

RevoluteJointDef revoluteJointDef = new RevoluteJointDef();
revoluteJointDef.initialize(anchor, body, anchor.getWorldCenter());
world.createJoint(revoluteJointDef);

但我想要旋转"身体"对于特定角度,当模拟运行并且重力= 10等时,身体正在转向底部就OK了。当我点击一个按钮时,我想把身体转到" myNewAngle"位置如图所示(位置1)

float myNewAngle = 0;
body.setType(BodyDef.BodyType.StaticBody);//for not effected from gravity
body.setTransform(body.getPosition(), lastAngle * MathUtils.degreesToRadians);

我的问题是我的身体"正在转动它的原点(位置3)我想把它转过来#34;枢轴点"我设置了" body.setTransform(anchor.getPosition()" ,但它没有用。我也不能用" motor"来做。

我怎样才能转身"身体"周围"枢轴点"动态吗

1 个答案:

答案 0 :(得分:0)

您需要相对于枢轴点旋转它的位置。假设我们有点fixedbody,这些点有一些世界空间坐标.worldCoordinate。您可以在body fixed度左右旋转v(伪代码)

pos = body.worldCoordinate() - fixed.worldCoordinate();
rotated_pos = rotateVector(pos, v);
body.setWorldCoordinate(rotated_pos);