2011-04-16 46 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