2014-08-31 2 views
3

현재 저는 직교 카메라를 사용하고 있습니다. 게임에 들어가기 전에 먼저 화면 크기를 수정하고 싶습니다. 현재 800x480으로 설정된 화면 크기가 있습니다. 다른 장치 및 화면 크기에서 제대로 작동합니까? 지금 가지고있는 것은 스플래시 화면과 게임 화면뿐입니다. 이를 달성하기 위해 어떤 코드 라인을 추가해야합니까?LibGDX - 모든 화면 해상도에서 내 게임을 어떻게 만드나요?

+0

네이티브 avd 또는 genymotion과 같은 에뮬레이터를 사용하여 다양한 배열을 테스트합니다. libgdx 작업을 많이 해본 적은 없지만 그것이 보통 해상도를 테스트하는 방법입니다. – zgc7009

+0

뷰포트에 관한 libgdx의 위키를 살펴보십시오. 나는 당신이 더 나은 해결책을 찾을 수있을 거라 생각합니다! https://github.com/libgdx/libgdx/wiki/Viewports – BennX

답변

6

카메라에 고정 너비를 지정하면 게임에서 안정적으로 작업 할 수있는 고정 된 단일 치수가 제공되므로 완벽하게 정상입니다. 이는 카메라가 화면 좌표가있는 일대일 좌표가 아닌 월드 좌표를 정의하는 데 사용되기 때문에 효과가 있습니다.

문제는 고정 카메라 높이에서 비롯된 것입니다. 고정 된 높이를 사용하면 장치 화면의 종횡비에 따라 화면이 늘어나거나 짧아집니다. 다른 종횡비를 고려하려면 카메라 높이 (현재 480)에 표시 비율을 곱해야합니다. 너비를 높이로 나눔으로써 화면 비율을 얻을 수 있습니다.

코멘트에 BennX에 의해 지적
float width = Gdx.graphics.getWidth(); 
float height = Gdx.graphics.getHeight(); 

OrthographicCamera camera = new OrthographicCamera(800, 480 * (height/width)); 

이 LibGDX 방금 다른 방법으로, 위와 같이 매우 같은 일을 할 수있는 뷰포트 소개 :이 같이 보일 것입니다. 위에 요약 한 것과 같은 효과를 얻으려면 뷰포트 만 사용하면 ExtendViewport을 사용합니다. 이것이하는 일은 한 방향으로 세계 크기를 유지하면서 다른 방향으로 세계 크기를 늘리는 것입니다. 따라서 세계는 처음에는 화면을 채우도록 확장되며 가로 세로 비율을 유지하면서 짧은 치수가 확장됩니다. 뷰포트의 유형을 만들려면,이 같이 보일 것입니다 :

OrthographicCamera camera = new OrthographicCamera(800, 480); 
ExtendViewport viewport = new ExtendViewport(800, 480, camera); 

가 뷰포트 위의 뷰포트 후 동일합니다 (800)의 최소 폭이 값의 480 분의 최소 높이를해야합니다 다른 하나는 화면의 종횡비에 따라 변경됩니다. 더 좁은 스크린은 더 많은 수직 공간을 가지지 만 더 넓은 스크린은 더 많은 수평 공간을 가질 것입니다. 뷰포트에 대한 자세한 내용은 LibGDX wiki 페이지 here을 방문하십시오.

+0

나는 그 좋은 해결책이라고 생각하지 않는다. Libgdx는 4 개월 전과 같은 모든 문제를 해결하기 위해 뷰포트를 구현했습니다. https://github.com/libgdx/libgdx/wiki/Viewports – BennX

+1

@BennX 머리를 주셔서 감사합니다. 여전히 뷰포트가없는 약간 오래된 버전의 엔진을 사용하고 있으므로이 솔루션을 알지 못했습니다. 두 가지 해결책을 모두 반영하여 답변을 업데이트했습니다. – MCeley

+0

@Mceley 응용 프로그램의 모든 화면에이 코드 줄을 적용해야합니까? – Dakota

0

아래의 접근법을 사용하고 있으며 거의 ​​모든 화면 크기에서 무시할 수있는 작은 스케일링 문제가 있습니다.

나는 항상 화면 크기 여기 1920.0x1080.0

ScreenViewport screenViewport=new ScreenViewport(camera); 
screenViewport.setUnitsPerPixel(Math.min(1920.0f/Gdx.graphics.getWidth(),1080.0f/Gdx.graphics.getHeight())); 

당신이 Math.min() 또는 Math.max()에서 당신의 접근 방식을 설정할 수 있습니다위한 그래픽 이미지를 사용합니다.

그것은

Device screen-size Math.max()  Math.max() 
800.0x480.0  1800.0x1080.0 1920.0x1152.0 
1920.0x1080.0  1920.0x1080.0 1920.0x1080.0 
2048.0x1440.0  1536.0x1080.0 1920.0x1350.0 

1080.0 * 1920.0에 참고 근처에 카메라 뷰 포트의 크기가 발생합니다 : 항상 게임 UI 화면의 설정 위치에 대한 camera.viewportWidth 및 camera.viewportHeight를 사용합니다.

관련 문제