在libGDX Box2D中,我有一个DynamicBody " body" 和StaticBody " anchor" 以及来自& #34;枢轴关节点" ,身体可以转动"枢轴点" 并完美地工作(位置2)。
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"来做。
我怎样才能转身"身体"周围"枢轴点"动态吗
答案 0 :(得分:0)
您需要相对于枢轴点旋转它的位置。假设我们有点fixed
,body
,这些点有一些世界空间坐标.worldCoordinate
。您可以在body
fixed
度左右旋转v
(伪代码)
pos = body.worldCoordinate() - fixed.worldCoordinate();
rotated_pos = rotateVector(pos, v);
body.setWorldCoordinate(rotated_pos);