我正在尝试在我在游戏世界中创建的Box2d对象上叠加纹理。但纹理的坐标是错误的。纹理的x轴和y轴距离世界上的实际物体位置非常远。
这是负责绘制纹理的代码行:
batch.draw(khumbtexture, bodyKhumb.getPosition().x ,bodyKhumb.getPosition().y );
结果是纹理被(150,150)的向量偏移。我该如何解决这个问题?
答案 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);