我在概念层面上遇到问题,因为大多数文章/问题都不深入。
据我所知,相机专注于游戏世界的一部分,就像真正的相机一样。
所以世界坐标是世界的坐标/测量值,对吗?和屏幕坐标是屏幕的坐标(无论是手机还是桌面启动器),对吧?视口是否同时处理世界大小/坐标以及预期的屏幕大小/坐标?
每当我使用unproject
方法时,无论是通过调用viewport.unproject
还是camera.unproject
(Gdx.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
演员更好吗?或者我会得到同样的问题吗?
答案 0 :(得分:1)
你必须像这样使用它:
Vector3 touch;
cam.unproject(touch.set(Gdx.input.getX(), Gdx.input.getY(), 0));
然后touch.x
和touch.y
是您未投影的坐标。