当我在使用视口时调用unproject()时,为什么某些值为负值

时间:2015-11-25 03:14:46

标签: java android libgdx

我有一个用java编写的游戏用libgdz for android我想出了如何用android支持多种屏幕尺寸但是当我调用camera.unproject()时,x值为负,y值为正,但是高于屏幕的界限。但一切看起来都很完美。为什么会这样?

1 个答案:

答案 0 :(得分:0)

就像大师Xoppa已经评论过的那样,你不应该期望你的世界坐标是积极的。默认情况下,相机的中心位于您的世界0,0,因此如果您取消投影左上角的屏幕坐标,我们可以预期它会返回负X和正Y.我的猜测是视口的默认位置是相同。将视口或摄像机向左移动时,它会使负X值增加更多。

如果您有一个静态视口并且想要只有正世界坐标,那么一旦创建到世界中心,就应该设置它的位置。这样左下角为0,0,右上角为worldWidth, worldHeight

Viewport vp = new FitViewport();
vp.setScreenBounds(worldWidth / 2, worldHeight / 2, worldWidth, worldHeight);
vp.apply();

但现在你可能只看到游戏世界的左下角了。因为那仍然坐在同一个世界的位置。此外,您可能不会需要这个,因为您从未投影中获得的坐标是"正确"你要与之互动的对象就是这个"正确的"坐标系。