没有在Box2d Body上绘制的纹理

时间:2012-03-10 07:36:48

标签: java android box2d libgdx

我正在尝试在我在游戏世界中创建的Box2d对象上叠加纹理。但纹理的坐标是错误的。纹理的x轴和y轴距离世界上的实际物体位置非常远。

这是负责绘制纹理的代码行:

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

结果是纹理被(150,150)的向量偏移。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

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