2016-06-20 4 views
0

텍스처를 화면 해상도에 따라 크기가 조정되도록 그리지 못합니다.뷰포트 및 카메라에 따라 텍스처를 그립니다.

저는 ScreenViewport를 사용하고 있습니다 (글꼴을 매끄럽고 왜곡없이 사용하고 싶습니다).

float w = Gdx.graphics.getWidth();          
float h = Gdx.graphics.getHeight(); 
gameCam = new OrthographicCamera(2f * h/w, 2f); 
gamePort = new ScreenViewport(gameCam); 

카메라의 높이와 너비가 무엇이든간에 결과는 같습니다. 렌더링 방법, 마지막으로

@Override 
public void resize(int width, int height) { 
gamePort.update(width, height, true); 
renderer.stage.getViewport().update(width, height, true); 
gameCam.viewportWidth = width; 
gameCam.viewportHeight = height; 
gameCam.update(); 

float aspectRatio = (float) width/(float) height; 
gameCam = new OrthographicCamera(2f * aspectRatio, 2f); 
gameCam.update(); 

: 크기 조정 방법에

, 나는 많은 것들을 시도

public void render() {            
    sb.setProjectionMatrix(cam.combined); 
    sb.draw(block.getTexture(), block.getPosition().x, block.getPosition().y, BLOCK_WIDTH, BLOCK_HEIGHT); 

BLOCK_WIDTH 및 BLOCK_HEIGHT = 48 개 내 텍스처 512px 그래서 내가 원하는입니다 그들보다 작게.

아래 그림에서 볼 수 있듯이 장치 크기가 큰 경우에도 창의 크기를 조정할 때도 텍스처의 크기와 위치가 동일하게 유지됩니다. 무대 상단에있는 점수 표에는이 문제가 없습니다.

enter image description here

답변

1

크기 조정 스프라이트에 대한 질문은 여기에 대답했다 :

How to resize a sprite in Libgdx?

을 그래서 그 대신, sprite.draw (배치)을 시도 (... 스프라이트를) batch.draw을 사용하는 대신 .

저는 LibGDX의 스테이지와 액터를 엄격하게 사용하여 (다른 것들 중에서도) 크기 조정과 위치 지정을 매우 쉽게합니다. ScreenViewport를 사용할 때 구성 요소의 크기를 화면 크기의 일정 비율로 설정합니다. 이것은 다른 화면 크기에 완벽하게 확장됩니다.

예를 들어, 단추를 정확히 100 픽셀 너비로 하드 코딩하는 대신 Gdx.graphics.getWidth() * 0.10f로 설정하면이 단추의 너비에 관계없이 화면 너비의 10 %가 설정됩니다. 화면의 해상도.

위치와 동일한 작업을 수행 할 수도 있습니다. 위치를 50 픽셀로 설정하는 대신 Gdx.graphics.getWidth() * 0.5f로 설정 한 다음 x 위치는 화면 너비의 % 5가됩니다.

블록이 일종의 그리드로 정렬되면, 위치 지정을위한 또 다른 옵션은 Sprite 대신 LibGDX Image를 사용하는 것입니다. 이미지는 액터를 기반으로하며 화면 크기를 조정할 때 자동으로 자신의 위치를 ​​바꿀 테이블에 모든 블록을 넣을 수 있습니다. 따라서 블록은 화면 상단의 점수와 똑같이 작동합니다.

+0

이러한 변경을 시도합니다. 카메라는 어때? 이 경우 어떻게 구성합니까? – JavaDev

+1

나는 카메라를 직접 다루지 않는다. 뷰포트에는 카메라가 포함되어 있으며 뷰포트로 수행하는 작업은 stage.getViewport(). update (width, height, true) 호출뿐입니다. resize 메서드의 내부. – Tekkerue

+0

그래서 선언 할 때 폭이나 높이를 지정하지 않으십니까? 그리고 설정하지 마라 .Ortho? – JavaDev

관련 문제