Libgdx坐标系原点(0,0),不在屏幕的左下角

时间:2018-01-31 14:50:11

标签: java libgdx

我正在开发一个可视化n体粒子模拟的程序。为此,我创建了一个相机,用于将粒子位置投影到屏幕上。然后,使用spritebatch将这些粒子渲染到正确的位置。但是,要使其工作,坐标系的原点必须位于屏幕的左下角。通常情况并非如此,相反,在所有情况下,原点位于屏幕的四分之一左右,并且在调整屏幕大小时会发生变化。

我如何保证坐标系原点始终位于屏幕的左下方,而不是在任一轴上提升几百个像素?

谢谢。

2 个答案:

答案 0 :(得分:0)

我解决了我的问题。而不是使用:

sprite.draw(batch);

我用过:

batch.setColor(color);
batch.draw(sprite.getTexture(),sprite.getX(),sprite.getY(),sprite.getWidth()*sprite.getScaleX(),sprite.getHeight()*sprite.getScaleY());

我不知道为什么会这样。

答案 1 :(得分:0)

如果你决定使用精灵,你应该坚持使用建议的工作流程并用以下方法绘制:

sprite.draw(batch);

我的意思是,如果要获取纹理并绘制它们,使用精灵的目的是什么?

当您在位置(0,0)处将纹理绘制到屏幕时,这意味着它的左下角将位于屏幕左下角。那个精灵的“热点”或“原点”默认位于它的左下角。

但您可以使用setOrigin方法更改它:

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#setOrigin-float-float-

也就是说,原点是精灵的“中心”,因此,如果它旋转,它将围绕该点旋转。此外,当您在某些坐标处绘制精灵时,精灵原点将精确地位于这些坐标处。这样您就不必调整精灵绘图位置。

检查该页面有哪些sprite类的方法......