Текстуры не рисуются поверх Box2d Body

Я пытаюсь наложить текстуру на объект Box2d, который я создал в своем игровом мире. Но координаты текстур просто неверны. Оси x и y текстур очень далеки от фактического расположения объектов в мире.

Это строка кода, отвечающая за отрисовку текстуры:

batch.draw(khumbtexture, bodyKhumb.getPosition().x ,bodyKhumb.getPosition().y );

В результате текстура смещается на вектор (150,150). Как я могу это исправить?


person whythehack    schedule 10.03.2012    source источник


Ответы (1)


Box2D использует метры для своей системы координат. Пакет может работать в экранных координатах или как-то иначе вы определили его матрицу проекции, что может привести к различиям при попытке отрисовки в координатах Box2D. Можете ли вы опубликовать код о том, как вы настроили свой SpriteBatch?

Вот один из способов сделать это. 1. Настройте камеру. 2. Настройте SpriteBatch на использование камеры для рисования вместо собственной внутренней камеры.

// setup the camera. In Box2D we operate on a
// meter scale, pixels won't do it. So we use
// an orthographic camera with a viewport of
// 48 meters in width and 32 meters in height.
// We also position the camera so that it
// looks at (0,16) (that's where the middle of the
// screen will be located).
camera = new OrthographicCamera(48, 32);    
camera.position.set(0, 15, 0);

Затем в вашем методе рендеринга

camera.update();
batch.setProjectionMatrix(camera.combined);
//clear screen here
//draw your stuff in Box2D meter coordinates
batch.draw( texture,1,2); 

Ссылка на первую часть: http://www.java2s.com/Open-Source/Android/Game/libgdx/com/badlogic/gdx/tests/box2d/Box2DTest.java.htm

person XiaoChuan Yu    schedule 10.03.2012
comment
ага... пробовал!... честно говоря, я отказался от libgdx... просто у меня не работает! - person whythehack; 04.04.2012