libgdx distorted texture when using camera.setToOrtho(false, GAME_WIDTH, GAME_HEIGHT);

谁都会走 提交于 2019-12-12 02:06:05

问题


I'am trying to make libgdx game, adn i've got 2 problems now: 1. When im using camera.setToOrtho(false, GAME_WIDTH, GAME_HEIGHT); my textrure of player is distored, one eye is bigger than another. 2. Im using this camera and viweport:

camera= new OrthographicCamera(GAME_WIDTH,GAME_HEIGHT);
camera.setToOrtho(false, GAME_WIDTH, GAME_HEIGHT);
viewport = new StretchViewport(GAME_WIDTH,GAME_HEIGHT,camera); 

and when i do :

touchPos.set(Gdx.input.getX(1),Gdx.input.getY(1),0);
 game.camera.unproject(touchPos);
System.out.println(touchPos.x+" "+ touchPos.y);

I get 0 0 in right top corner but my character witch cords 0 0 is drawing in left bottom corner.

When i use:

 game.camera = new OrthographicCamera(820,480);
game.viewport = new FillViewport(820,480,game.camera);

i must use game.batch.setProjectionMatrix(game.camera.combined);

when i use this code i've got corectly working unproject method and coordinate system but i've got distored texture.

When i use:

camera = new PerspectiveCamera();
viewport = new StretchViewport(900, 470, camera);

i've got distored texture and bad coords system. and i can 't use :game.batch.setProjectionMatrix(game.camera.combined);


回答1:


It is distorted because you are using a fixed width and height for the camera, so it simply stretches to fit whatever size window/screen you're putting it on.

Incidentally, StretchViewport does the same thing (distorts the scene to fit the dimensions you gave it to the window). But you just created a viewport without actually calling update() on it, so it's not doing anything.

You most likely want to use ExtendViewport or FillViewport to avoid stretching, but other options are available. Read about them here.

Your viewport won't properly respond to screen rotations (or desktop window resize) unless you put viewport.update(width,height) into the resize method. And you have to call update on it at least once regardless, using the actual screen dimensions. This is most convenient by simply putting viewport.update(width,height) into the resize method.



来源:https://stackoverflow.com/questions/24918199/libgdx-distorted-texture-when-using-camera-settoorthofalse-game-width-game-he

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!