我正在尝试制作libgdx游戏,现在我遇到了2个问题: 1.当我使用camera.setToOrtho(false,GAME_WIDTH,GAME_HEIGHT)时;我的玩家的文本很沮丧,一只眼睛比另一只眼睛大。 我正在使用这台相机和viweport:
camera= new OrthographicCamera(GAME_WIDTH,GAME_HEIGHT);
camera.setToOrtho(false, GAME_WIDTH, GAME_HEIGHT);
viewport = new StretchViewport(GAME_WIDTH,GAME_HEIGHT,camera);
当我这样做时:
touchPos.set(Gdx.input.getX(1),Gdx.input.getY(1),0);
game.camera.unproject(touchPos);
System.out.println(touchPos.x+" "+ touchPos.y);
我在右上角得到0 0但我的角色巫婆0 0画在左下角。
当我使用时:
game.camera = new OrthographicCamera(820,480);
game.viewport = new FillViewport(820,480,game.camera);
我必须使用game.batch.setProjectionMatrix(game.camera.combined);
当我使用这个代码时,我已经完成了unproject方法和坐标系统的工作,但是我的纹理质量很差。
当我使用时:
camera = new PerspectiveCamera();
viewport = new StretchViewport(900, 470, camera);
我的纹理和纹章都很糟糕。我不能使用:game.batch.setProjectionMatrix(game.camera.combined);
答案 0 :(得分:0)
由于您使用相机的固定宽度和高度,因此它会被扭曲,所以它只是伸展以适合您正在放置的任何尺寸的窗口/屏幕。
顺便说一句,StretchViewport做同样的事情(扭曲场景以适应你给窗口的尺寸)。但是你刚刚创建了一个视口而没有实际调用它update()
,所以它没有做任何事情。
您最有可能希望使用ExtendViewport或FillViewport来避免拉伸,但也可以使用其他选项。阅读他们here。
除非您将viewport.update(width,height)
放入调整大小方法,否则您的视口无法正确响应屏幕旋转(或桌面窗口调整大小)。而且,无论使用实际的屏幕尺寸,您都必须至少调用update
一次。只需将viewport.update(width,height)
放入resize方法即可,这非常方便。