2014-05-22 21 views
5

Jaki jest właściwy sposób debugowania narysować fizykę Bullet w libGDX, tak, że mogę zobaczyć btCollisionObjects, które konfiguruję?Debugowanie w libGDX

Do tej pory mam poniżej, ale nie wydaje się, że btCollisionObjects są wyświetlane.

+0

Czy możesz spróbować wydobyć elementy debugowania z początku/końca zestawu modelbatch? Zwróć też uwagę, że DebugDrawer ma poważny problem z pamięcią. Myślę, że ma wyciek pamięci. – noone

+0

Zaktualizowałem kod, aby odzwierciedlić zmiany, które wprowadziłem. Nadal nie widzę obiektów. – AWippler

+0

"DebugDrawer" jest tym z testów? I implementuje niektóre wywołania zwrotne? – noone

Odpowiedz

5

Mam nadzieję, że to pomoże ci jeszcze 3 miesiące po fakcie, ponieważ Twoje fragmenty zdecydowanie mi pomogły! ;)

Umieściłem fragmenty kodu w mojej aplikacji i mogłem uzyskać poprawny obraz debugowania.

W zamian za to używam dynamicsWorld, ale zamienię kod i działa.

dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher, broadphase, constraintSolver, collisionConfig); 

Jedna rzecz, którą chciałbym zasugerować, to zamiana przy rysowaniu modeli i podczas rysowania debugowania. Jeśli umieścisz drugi błąd debugowania, zostanie on wyciągnięty na końcu, a więc na wierzchu modeli. W przeciwnym razie rysowanie debugowania zostanie zasłonięte przez modele. Spróbuj tego zamiast:

public void render(float delta) { 

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

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

Pomógł mi w tym celu montaż obiektów kolizyjnych. Poza tym nie mogłem znaleźć dokumentacji na ten temat. Zastanawiam się, gdzie AWippler znalazł kod debugowania dla opakowania bullet3D dla libgdx. Każdy, kto ma problemy, może spróbować tego.

@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); 
}