libGDX坐标系

我正在尝试在libGDX中正确配置我的CameraSprite ,以便在2D坐标系中正确显示左下角的原点。

我像这样设置我的Camera

 cameraWidth = Gdx.graphics.getWidth(); cameraHeight = Gdx.graphics.getHeight(); camera = new OrthographicCamera(1, cameraHeight/cameraWidth); 

我设置我的Sprite是这样的:

 sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); sprite.setScale(scale); sprite.setPosition(startX,startY); 

我的问题是sprite.setSize(x,y) 。 如果我将所有精灵设置为(1, texture aspect ratio)的大小,那么所有内容都以正确的显示比例(不是拉伸或拉伸)绘制,但没有任何东西绘制在正确的位置。 例如,如果我在(0,0)处绘制一些东西,它将以其左下角从屏幕左侧绘制并向上绘制多个像素。

我已经注意到通过改变比率我可以在不同的地方绘制东西 – 即如果我将其设置为(1, display aspect ratio)事情看起来非常接近于在正确的地方绘制 – 他们只是从他们的中心画出,而不是他们的左下角,正如LibGDX指定的那样。 唯一的问题是图像都显得微笑或拉伸,这是不好的。

这似乎是一个简单的问题,我只是想知道如何设置它,所以我可以有一个合理的坐标系统,在正确的位置和正确的纵横比绘制东西。 谢谢。

更改视口以匹配屏幕的宽高比后,除非屏幕为方形,否则(0,0)将不再位于屏幕的左下角。 如果屏幕比它高,那么x轴的可见部分仍将从0.0到1.0,但y轴上的0.0现在将在屏幕底部以外的某处。

如果你调整相机,使(0,0)位于屏幕的左下角,并记住可见的y轴只能达到grapicsHeight / graphicsWidth,那么这应该可以解决你的坐标问题。

我建议将相机设置为指向屏幕中间而不是左下角。 这里有一个例子就是这样,绘制一个总是在屏幕中心的2:1矩形,无论你调整多少,总是以2:1的比例。

我找到了解决这个问题的方法:

将相机设置为正射(即使它已经是正交相机)

 camera.setToOrtho(false,1,screen height / screen width); 

此外,每个精灵必须将其位置设置为(x - sprite.getWidth()/2, y - sprite.getHeight()/2我扩展了Sprite类并覆盖了setPosition方法以解决此问题。现在,每次设置位置后, Sprite最终会进入“你认为他们会去”的地方,其中setPosition(0,0)位于左下角, setPosition(1,height/width)位于左上角。

奇怪的是,这会绘制每个以(x,y)点为中心的精灵,这是有意义的,因为从位置减去宽度/ 2和高度/ 2,除了减去值不会使setPosition通过底部居中精灵左角 – 它的中心位置我还没弄明白。