【问题标题】:Prevent body from rotating in Box2D防止身体在 Box2D 中旋转
【发布时间】:2013-01-26 12:47:45
【问题描述】:

我目前正在使用 Box2d,更准确地说是 Java 端口 jBox2d。

我有一个圆在下落时与其他圆相撞(所有这些圆形成一种曲柄,见下图)。

自然,圆在下落时开始旋转。但我想防止它旋转,这样摩擦力会更高。

【问题讨论】:

  • 我知道,谢谢。但是我们在做计算机科学,物理引擎应该可以让你改变标准物理。我希望我的圈子不要旋转。

标签: java box2d game-physics jbox2d


【解决方案1】:

为了防止 body 旋转在 BodyDef 设置 fixedRotation = true 或调用 Body 的 setFixedRotation(如果您需要运行时更改行为)。

【讨论】:

  • 实际上,我尝试了所有 fixedRotation = true 和 angularDamping 以及您在 BodyDef 对象上想象的所有内容,但没有任何效果。不过,我终于设法通过在运行时对 body 对象本身使用 setAngularDamping(200) 来使其工作。我也可以在 body 对象上尝试 setFixedRotation。
  • 看起来你做错了,固定旋转必须有效。检查夹具的密度,它必须大于零。因为这件事,我遇到了这样的麻烦。
  • 在 box2dweb 中的 Body(不是 BodyDef)上使用 .SetFixedRotation(true)。
【解决方案2】:

在运行时你想设置 set rotationfixed 然后

b2Body body;  
body->SetFixedRotation(true);

【讨论】:

    【解决方案3】:

    固定旋转在物理上是指在固定轴上旋转,所以isFixedRotation=true;可能不能解决这个问题,但是将角度阻尼设置这么高的值可以防止旋转

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多