看起来像一个视口是没用的,但我可能会错过一些东西。
例如,我想制作一个我有物体的游戏,如果我点击屏幕的左侧或右侧,我就死了!所以,如果我使用Gdx.graphis.getWidth()和0,一切都会正常工作。
好的,但是让我们设置viewport = new ExtendViewport(500,800,相机); 酷我没有500和800的虚拟像素===> 5:8 然后我输入命中结束屏幕的逻辑,所以如果object.x< 0或object.x> 800 ---->对象DIES!
但现在我在平板电脑上开始游戏,其分辨率为1500 x 2000 ===> 3:4,现在一切都错了,整个屏幕都向左移动,所以0仍然有效,但800不是右边缘的结束。
然后我使用FitViewport,由于不同的宽高比,现在可以移动左右边缘的碰撞。
似乎我可以使用strechViewport,或者只是手动编写代码...但我知道我错过了一些东西,因为它必须使用它。
非常感谢任何帮助!
答案 0 :(得分:0)
首先,在我看来,将相机置于(0,0)坐标中心是个好习惯。然后,您将始终-screenWidth/2
作为左侧屏幕的边缘位置,screenWidth/2
作为右侧。
其次,在使用视口时,不应直接使用屏幕坐标。 Viewport有一种将屏幕转换为视口坐标的方法:
unproject(Vector2 screenCoords)
它也有向后的方法
project(Vector2 worldCoords)
无论显示器有多大,这些都能让你始终保持相同类型的坐标。