LibGDX:未投影的世界坐标如何工作?

时间:2018-01-17 04:16:09

标签: java libgdx

我在概念层面上遇到问题,因为大多数文章/问题都不深入。

据我所知,相机专注于游戏世界的一部分,就像真正的相机一样。

所以世界坐标是世界的坐标/测量值,对吗?和屏幕坐标是屏幕的坐标(无论是手机还是桌面启动器),对吧?视口是否同时处理世界大小/坐标以及预期的屏幕大小/坐标?

每当我使用unproject方法时,无论是通过调用viewport.unproject还是camera.unprojectGdx.input.getX()Gdx.input.getY()作为Vector3的参数unproject方法的参数),没有其他变化。

我想要的游戏宽度和高度分别是136和204(宽高比)。我有像“if x> 32 ....”这样的方法,但显然会产生问题,因为当我在不同的设备(甚至我的桌面启动器)上运行它时,32处的坐标是非常不同的。我如何使它一样?这是unproject方法解决的问题吗?

它应该如何运作?它是否经过精心设计,无论我在屏幕上触摸什么地方,触摸都会被映射到我触摸过的世界上的什么?

通常我会这样称呼:

Gdx.app.log("x", Gdx.input.getX() + "");
Gdx.app.log("y", Gdx.input.getY() + "");

但是当我调用unproject方法时,坐标保持不变。我不解释它吗?

仅使用box2d演员更好吗?或者我会得到同样的问题吗?

1 个答案:

答案 0 :(得分:1)

你必须像这样使用它:

Vector3 touch;

cam.unproject(touch.set(Gdx.input.getX(), Gdx.input.getY(), 0));

然后touch.xtouch.y是您未投影的坐标。