java - Box2D - 落体在重力作用下不加速

标签 java android box2d physics jbox2d

我已经创建了一个下落球的基本示例,但我对为什么物体在下落时没有加速感到有点困惑。它以恒定速度行驶,这不是我所期望的。这是我第一天使用 Box2D,我想我错过了一些基本的东西,但我想不通。

public PhysicsWorld() {
    // Step 1: Create Physics World Boundaries
    Vec2 gravity = new Vec2(0, 20);
    boolean doSleep = true;
    world = new World(gravity, doSleep);

    // Dynamic Body
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.DYNAMIC;
    bodyDef.position.set(100, 100);
    body = world.createBody(bodyDef);
    MassData md = new MassData();
    md.mass = 5;
    body.setMassData(md);
    PolygonShape dynamicBox = new PolygonShape();
    dynamicBox.setAsBox(1, 1);
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = dynamicBox;
    fixtureDef.density = 1;
    fixtureDef.friction = 0.3f;
    body.createFixture(fixtureDef);

    velocityIterations = 6;
    positionIterations = 2;

}

public void update() {
    world.step(timeStep, velocityIterations, positionIterations);
    Log.i("body", "x: " + body.getPosition().x + " y: " + body.getPosition().y);
}

输出:

01-22 21:17:20.750: I/body(7698): x: 100.0 y: 102.0
01-22 21:17:20.777: I/body(7698): x: 100.0 y: 104.0
01-22 21:17:20.796: I/body(7698): x: 100.0 y: 106.0
01-22 21:17:20.824: I/body(7698): x: 100.0 y: 108.0
01-22 21:17:20.847: I/body(7698): x: 100.0 y: 110.0

我希望每次迭代都应用重力并增加 Y 方向的球速度。

最佳答案

这是因为速度受引擎限制,而您没有使用正确的世界坐标。将其视为米-公斤-秒系统。您有一个 1 x 1 米的盒子,每 1/40 秒下降 2 米,即每秒 80 米。这相当快。

关于java - Box2D - 落体在重力作用下不加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964793/

相关文章:

java - 从 REST Web 服务在 Servlet 之前调用过滤器

java - 为什么 catch block 中的 Java return 语句不起作用?

Java volley空json对象

java - 应用程序 IncomingHandler 有时收不到服务消息

Android(andengine + box2d)初学者——拖动一个物体(sprite/body)

c++ - 在 box2d 中操纵 Sprite 运动

java - 使用stanford core nlp java代码获取情绪分析结果

java - 我应该为 POST HTTP 请求的 Content-Length 使用什么值?

java - Android:/data/local/tmp/* 权限被拒绝

c++ - 从外部 C++ 库访问静态的问题