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



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

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

谢谢。

如果你决定使用精灵,你应该坚持建议的工作流程,并用:

sprite.draw(batch);

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

当您在位置 (0,0( 绘制纹理以屏幕时,这意味着它的左下角将位于屏幕左下角。默认情况下,精灵的"热点"或"原点"位于其左下角。

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

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

也就是说,原点是精灵的"中心",所以如果它旋转,它将围绕该点旋转。此外,当您在某些坐标处绘制精灵时,精灵的原点将正好在这些坐标处。这样你就不必调整精灵绘制位置。

在该页面上检查您有什么精灵类的方法...

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

sprite.draw(batch);

我使用过:

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

我不知道为什么会这样。

最新更新