2011-04-16 94 views

回答

4

这不完全是一个直接的编程相关的问题,因此可能很快就会关闭。

不管如何,一个不 JBox2D编写游戏程序,一个节目游戏 JBox2D。如果你正在寻找使用jbox2d库的帮助,一个快速的谷歌搜索出现了one tutorial(对于android来说,但我期望这个库的一般用途是相当一般的),看起来可能有帮助 - 或者,尝试JBox2D user manual。另一方面,如果真的想知道想知道的是如何编写一般的游戏......那么这是一个更大的话题,最好的解决方法是用Google搜索游戏教程。请记住,制作游戏是一个普遍的话题,而不是平台特定的,所以不要回避不为Java编写的教程 - 而是尝试改编他们的示例代码,您可能会学到更多!

4

我开发了一个简单的应用程序使用jBox2D和javaFX 2.你可以找到这个应用程序的教程和源代码here

您也可以观看应用程序示例演示视频here

6

我已经移植从C的Hello World样品++手册jbox2d。这只是一个逐行的端口。显然你需要编写一个基本的Java程序并调用这段代码。您还需要导入一些库,我无法在StackOverflow中导入我的导入格式,所以我将它们排除在外。希望您的IDE将为您处理进口。

// Static Body 
    Vec2 gravity = new Vec2(0,-10); 
    World world = new World(gravity); 
    BodyDef groundBodyDef = new BodyDef(); 
    groundBodyDef.position.set(0, -10); 
    Body groundBody = world.createBody(groundBodyDef); 
    PolygonShape groundBox = new PolygonShape(); 
    groundBox.setAsBox(50, 10); 
    groundBody.createFixture(groundBox, 0); 

    // Dynamic Body 
    BodyDef bodyDef = new BodyDef(); 
    bodyDef.type = BodyType.DYNAMIC; 
    bodyDef.position.set(0, 4); 
    Body body = world.createBody(bodyDef); 
    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); 

    // Setup world 
    float timeStep = 1.0f/60.0f; 
    int velocityIterations = 6; 
    int positionIterations = 2; 

    // Run loop 
    for (int i = 0; i < 60; ++i) { 
     world.step(timeStep, velocityIterations, positionIterations); 
     Vec2 position = body.getPosition(); 
     float angle = body.getAngle(); 
     System.out.printf("%4.2f %4.2f %4.2f\n", position.x, position.y, angle); 
    } 
+0

除了此代码被破坏,世界不再支持jBox2D中的“doSleep”。 – 2014-06-30 08:48:59

+0

@iLoveUnicorns我纠正了这一点。 (等待同行评议)。 – GKFX 2014-08-11 10:05:10