1

似乎当我为我的对象设置更大的半径时,我对它们施加的力就不那么有效了。box2d 会计算物体的大小来计算力吗?

这是我创建 circleShape 时的代码:

    this._shape = new CircleShape();
    this._shape.setRadius(this._box2d.scalarPixelsToWorld(radius));
    this._fixture = new FixtureDef();
    this._fixture.shape = this.getShape();
    this._fixture.density = 1;
    this._fixture.friction = 0.3f;
    this._fixture.restitution = 0f;
    this._body.createFixture(this._fixture);

半径越大,物体上的力越小。我可以禁用这个吗?

4

1 回答 1

0

的。Box2d 根据其夹具尺寸和密度动态计算物体的总质量:较大的夹具形状会增加物体的质量,因此其改变速度的阻力会更大;请记住,如果你想模拟真实的物理,这就是它应该如何工作的。

但是,如果您真的希望所有身体无论尺寸和密度都具有相同的质量,您可以尝试:

  • 设置与半径圆成比例的密度(半径越大,密度越小),或
  • 覆盖你的身体质量void SetMassData(const b2MassData* data);

希望能帮助到你。

于 2013-04-14T12:25:50.703 回答