libGDX坐标系

时间:2013-03-01 00:17:28

标签: java 2d libgdx projection

我正在尝试正确配置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指定的那样。唯一的问题是图像都显得模糊或拉伸,这是不好的。

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

2 个答案:

答案 0 :(得分:2)

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

如果您调整相机以使(0,0)位于屏幕的左下方,并记住可见的y轴将仅上升到 grapicsHeight / graphicsWidth 那么应该解决你的坐标问题。

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

答案 1 :(得分:0)

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

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

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通过左下角的精灵居中 - 它以我未想到的方式居中。