【问题标题】:Box2D body dynamic turn around pivot point dynamically?Box2D body dynamic 动态绕轴心点?
【发布时间】:2016-10-31 13:43:43
【问题描述】:

在 libGDX Box2D 中,我有一个 DynamicBody "body" 和 StaticBody "anchor" 及其来自 "pivot joint point" 的关节和 body可以转身“枢轴点”并完美工作(位置 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 等时,身体正在转向底部它可以。当我单击一个按钮时,我想将身体转到“myNewAngle”位置,如图所示(位置 1)

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

我的问题是我的“身体”正在绕其原点(位置 3)旋转没用。我也不能用“电机”来做。

我怎样才能使“身体”围绕“枢轴点”动态转动?

【问题讨论】:

  • 您需要将参照系更改为固定框架,然后在那里进行旋转。你想旋转什么?身体的角度,还是整个位置?
  • @pingul 我想改变具有“枢轴点”的身体的角度,但我想围绕“枢轴点”转动身体所以应该是什么代码?

标签: libgdx geometry box2d physics game-physics


【解决方案1】:

您需要旋转它相对于枢轴点的位置。假设我们有点fixed、body,它们有一些世界空间坐标.worldCoordinate。你将body 旋转fixed v 度数(伪代码)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    相关资源
    最近更新 更多