libGDX坐标系
我正在尝试在libGDX中正确配置我的Camera
和Sprite
,以便在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
通过底部居中精灵左角 – 它的中心位置我还没弄明白。