2

我一直在搞乱 jbox2d,当身体的 x 速度受到世界重力的影响时,我感到很惊讶。这是我的代码:

    //create world
    Vec2 gravity = new Vec2(0, 1);
    boolean sleep = true;
    world = new World(gravity, sleep);
    //create wheel
    BodyDef wheelBodyDef = new BodyDef();
    wheelBodyDef.type = BodyType.DYNAMIC;
    wheelBody = world.createBody(wheelBodyDef);
    CircleShape circleShape = new CircleShape();
    FixtureDef wheelFixtureDef = new FixtureDef();
    wheelFixtureDef.shape = circleShape;
    Fixture wheelFixture = wheelBody.createFixture(wheelFixtureDef);
    wheelBody.setLinearVelocity(new Vec2(50, 0));

如果我每帧都应用它或禁用重力,线速度只会产生显着差异。谁能弄清楚我做错了什么?

4

2 回答 2

1

Box2d 不支持零重力模拟;这就是为什么当你禁用重力时你看不到任何区别。此外,您可能看到的差别不大,因为 的重力(0, 1)非常弱;试试(0, 10)

也是setLinearVelocity一个 rayCast 函数。您可能正在寻找applyForce().

于 2012-05-26T18:22:15.403 回答
0

如果您在物体上设置线速度,则意味着它将沿矢量设置的速度方向移动。如果您禁用重力,则不会影响此运动,但启用重力后,其运动每帧都会受到重力的影响。如果你把一个苹果扔到外太空,它会朝着发射的方向无限移动,但在地球上,重力又会不断地把它拉下来。如果你想让你的身体沿着你想要的方向直线移动,那么你必须设置每帧的线速度。观看教程,#2.35 和 #2.36,那里的问题得到了很好的解释。

祝你好运

于 2012-10-20T08:11:25.773 回答