2014-05-22 9 views
5

Was ist der richtige Weg zum Debuggen zeichnen Bullet Physik in libGDX, so dass ich die btCollisionObjects, die ich einrichten kann sehen?DebugDrawing in libGDX

Bisher habe ich die unten, aber es scheint nicht, dass die btCollisionObjects erscheinen.

+0

Können Sie versuchen, die Debug-Zeichensätze aus dem Modelbatch Anfang/Ende zu entfernen? Beachten Sie auch, dass der DebugDrawer ein schwerwiegendes Speicherproblem hat. Ich denke, es hat ein Speicherleck. – noone

+0

Ich habe den Code aktualisiert, um die Änderungen wiederzugeben, die ich vorgenommen habe. Sehen Sie die Objekte immer noch nicht. – AWippler

+0

Der 'DebugDrawer' ist der aus den Tests? Und es implementiert einige der Rückrufe? – noone

Antwort

5

Ich hoffe, dass Ihnen das 3 Monate nach der Tat noch hilft, denn Ihre Schnipsel haben mir definitiv geholfen! ;)

Ich habe Ihre Code-Snippets in meine App eingefügt und konnte die Debug-Zeichnung in Ordnung bringen.

Für den Datensatz verwende ich stattdessen eine dynamicsWorld, aber Code ausgetauscht und es funktioniert.

Die eine Sache, die ich vorschlagen würde, ist Swapping, wenn Sie die Modelle zeichnen und wenn Sie das Debug zeichnen. Wenn Sie die Debug-Sekunde setzen, wird sie zuletzt und damit über den Modellen gezeichnet. Andernfalls werden Sie feststellen, dass die Debug-Zeichnung von den Modellen verdeckt wird. Versuchen Sie stattdessen:

public void render(float delta) { 

    modelBatch.begin(cam); 
    ... 
    modelBatch.end(); 

    debugDrawer.begin(cam); 
    collisionWorld.debugDrawWorld(); 
    debugDrawer.end(); 
} 
0

die Kollisionsobjekte in Kollision Welt mir geholfen Hinzufügen. Außerdem konnte ich kaum eine Dokumentation dafür finden. Ich frage mich, wo AWippler den Debugging-Code für bullet3D Wrapper für libgdx gefunden hat. Jeder andere, der Probleme hat, kann dies versuchen.

@Override 
public void show() { 
    Bullet.init(); 
    ...   
    collisionConfig = new btDefaultCollisionConfiguration(); 
    dispatcher = new btCollisionDispatcher(collisionConfig); 
    broadphase = new btDbvtBroadphase(); 
    collisionWorld = new btCollisionWorld(dispatcher, broadphase, collisionConfig); 
    for (Ball b : gameWorld.balls) { 
     collisionWorld.addCollisionObject(b.getBallObject()); 
    } 
    for (Brick b : gameWorld.bricks) { 
     collisionWorld.addCollisionObject(b.getBrickObject()); 
    } 
    debugDrawer = new DebugDrawer(); 
    collisionWorld.setDebugDrawer(debugDrawer); 
    debugDrawer.setDebugMode(btIDebugDraw.DebugDrawModes.DBG_MAX_DEBUG_DRAW_MODE); 
}