Box2d Revolute联合车辆带手臂

时间:2013-01-27 16:36:20

标签: java android box2d

我正在图像上创建这样的车辆:

enter image description here

如您所见,有:

1)主车身(红色矩形) 2)轮子 3)车辆臂(黑色矩形)

在所示的锚定中心点使用Revolute关节将车臂与车辆主体连接,此臂可以上下移动(具有以下角度限制),以便您可以看到它只能以90度移动。

我的问题是,我通过施加角度冲动来移动这个手臂,它可以工作,我可以移动手臂,但它会一直下降到默认位置。我正在努力如何“禁用”关节,所以只能使用我的控制器移动手臂,因此它不受重力影响,因此玩家可以稍微向上移动手臂,手臂应保持在此位置,而不是跌倒。

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:3)

禁用重力影响的最佳方法是在b2BodyDef将gravityScale设置为零。但是这个参数只出现在Box2D的最后版本中,也许,你的java端口没有这样的东西

无论如何,我认为你对引力的想法并不是那么好。这不是物理的,不现实的,你可以找到一些相关的麻烦。例如,如果除重力之外的另一种力会影响手臂怎么办?这将导致所有相同的问题。

在我看来,更好的方法是制造手臂 - 使用旋转关节的马达。您可以在“Revolute joint motor”部分找到there的一些教程。您可以启用/禁用电动机并更改其速度运行时间以模拟车辆逻辑。此外,还可以更改关节的运行时上/下限,以防止在未执行任何动作时手臂移动。实现这一目标的另一种方法 - 将电机速度设置为零,这将使电机转变为某种摩擦力。