我正在图像上创建这样的车辆:
如您所见,有:
1) 车身主体(红色矩形) 2) 轮子 3)车辆 ARM (黑色矩形)
ARM 在所示 anchor 中心点通过旋转关节与车辆主体连接,该 ARM 可以上下移动(具有以下角度限制),因此您可以看到它只能在 90 度内移动。
我的问题是,我通过施加角脉冲来移动这个 ARM ,它有效,我可以移动 ARM ,但它不断落到默认位置。我正在努力如何“禁用”关节,因此只能使用我的 Controller 移动 ARM ,这样它就不会受到重力的影响,因此玩家可以稍微向上移动 ARM ,并且 ARM 应该保持在这个位置,而不是落下。
任何帮助都会很棒,谢谢。
最佳答案
禁用重力影响的最佳方法是将 b2BodyDef 处的 gravityScale
设置为零。但是这个参数只出现在Box2D的最新版本中,并且,也许,你的java端口中没有这样的东西
无论如何,我认为你关于重力的想法不太好。它不是物理的,不现实的,因此你会发现一些相关的麻烦。例如,如果除重力之外的其他力会影响 ARM 怎么办?这会导致同样的问题。
在我看来,制作 ARM 的更好方法是使用旋转关节电机。您可以找到一些教程 there在“旋转关节电机”部分中。您可以启用/禁用电机并更改其速度运行时间以模拟车辆逻辑。此外,更改关节的运行时上限/下限也可能有用,以防止在不执行 Action 时 ARM 移动。实现此目的的另一种方法是将电机速度设置为零,这会将电机转化为某种摩擦力。
关于java - 带 ARM 的 Box2d 旋转关节车辆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14549511/