1

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

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

4

2 回答 2

2

一旦您更改视口以匹配屏幕的纵横比,那么 (0, 0) 将不再位于屏幕的左下方,除非屏幕是方形的。如果屏幕的宽度大于高度,那么 x 轴的可见部分仍会从 0.0 变为 1.0,但 y 轴上的 0.0 现在将位于屏幕底部的某个位置。

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

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

于 2013-03-01T11:04:50.317 回答
0

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

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

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

此外,每个精灵必须将其位置设置为(x - sprite.getWidth()/2, y - sprite.getHeight()/2。我扩展了Sprite类并覆盖了setPosition方法来解决这个问题。现在,每次设置位置时,Sprites 最终都会转到您“认为他们会去的地方”,setPosition(0,0)并将其放在左下角和setPosition(1,height/width)左上角。

奇怪的是,这会绘制以 (x,y) 点为中心的每个精灵,这是有道理的,因为从位置中减去了 width/2 和 height/2,除了减去这些值不会使setPosition精灵通过左下角居中角落 - 它以我还没有弄清楚的方式居中。

于 2013-03-02T01:29:35.837 回答