Szukaj…


Rzutnie

Aby obsługiwać wiele rozdzielczości i współczynników proporcji, Libgdx wykorzystuje tak zwane Viewports .
Istnieje kilka rodzajów Viewports które wykorzystują różne strategie do obsługi wielu rozdzielczości i współczynników proporcji.
Viewport używa Camera pod maską i zarządza jej viewportHeight i viewportWidth . Opcjonalnie możesz nadać Viewport Camera w jej konstruktorze, w przeciwnym razie domyślnie użyje Camera OrthographicCamera :

private Viewport viewport;
private Camera camera;

public void create() {
   camera = new PerspectiveCamera();
   viewport = new FitViewport(8f, 4.8f, camera);
}  

Ponadto należy podać konstruktor rzutni worldWidth i worldHeight . Ta przestrzeń będzie reprezentować wirtualny układ współrzędnych, którego użyjesz do określania położenia obiektów i ich rozmiarów. Transformacja rzutni, którą można na przykład zastosować do SpriteBatch, automatycznie zajmie się transformacją współrzędnych logicznych na rzeczywiste współrzędne ekranu, w sposób zgodny z rzeczywistym typem używanej rzutni. Na przykład, gdy używasz projekcji ortograficznej (domyślna kamera OrthographicCamera ): jeśli Twój świat ma rozmiar 12,8 na 7,8 metra, a ekran Twojego urządzenia ma 2560 x 1560 pikseli, wówczas Twój świat będzie dynamicznie wyświetlany z 200 pikselami na metr.

Kiedy zmienia się rozmiar Viewport (na przykład jeśli zmienia się orientacja ekranu smartfona), musisz poinformować Viewport o tej zmianie. następnie automatycznie zaktualizuje viewportHeight Camera viewportHeight i viewportWidth :

public void resize(int width, int height) {
    viewport.update(width, height);
}

Viewport y także zarządzać OpenGL Viewport i modyfikować obszar rozciągliwej, ile potrzeba.

Viewport zajmują się także konwertowaniem współrzędnych ekranu na współrzędne gry, co jest szczególnie potrzebne do wybierania:

private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
    worldPos.set(x, y);
    viewport.unproject(worldPos);
    processPicking(worldPos);
}

Wbudowane rzutnie

Istnieje kilka wbudowanych rzutni, z których każda robi różne rzeczy. Oto lista nazwisk i ich opisów:

Nazwa rzutni Opis
StretchViewport Rozciągnie ekran. Brak czarnych pasków, ale proporcje mogą być wyłączone.
FitViewport Maksymalizuje jego rozmiar na podstawie proporcji. Może mieć czarne paski.
FillViewport Zupełnie to samo co FitVieport, ale zawsze wypełnia cały ekran.
ScreenViewport Zawsze wypełnia cały ekran, ale nie zmienia rozmiaru żadnych dzieci.
ExtendedViewport Utrzymuje światowy współczynnik kształtu bez czarnych pasów, przedłużając świat w jednym kierunku
CustomViewport Własnie zaprogramowana rzutnia. Może mieć czarne pasy i może zachować proporcje.

Niestandardowe rzutnie

Możesz stworzyć własną niestandardową rzutnię. Może mieć czarne pasy i może, ale nie musi utrzymywać współczynnika kształtu, w zależności od tego, jak go zaprogramujesz. Niestandardowa rzutnia wyglądałaby mniej więcej tak:
public class Tutorial extends Viewport . Musisz zastąpić update(width, height) , ale to wszystko.

Inną próbą byłoby rozszerzenie ogólnego ScalingViewport i dostarczenie innego skalowania, które nie jest jeszcze dostarczone. Załóżmy, że ustawiłeś Scaling.none . To mogłoby wyglądać mniej więcej tak: Przykład obrazu Jeśli potrzebujesz trochę informacji, możesz znaleźć wbudowane klasy rzutni tutaj .

StretchViewport

StretchViewport jest typem Viewport , który obsługuje wirtualny rozmiar ekranu.
Umożliwia to zdefiniowanie stałej szerokości i wysokości (niezależnie od rozdzielczości).
StretchViewport , jak sama nazwa wskazuje, rozciąga wirtualny ekran, jeśli wirtualny współczynnik proporcji nie odpowiada rzeczywistemu współczynnikowi proporcji. Rzutnia OpenGL nie zostanie zmodyfikowana i nie pojawią się czarne pasy.

Stosowanie:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new StretchViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}

FitViewport

FitViewports to rzutnie, które zawsze zachowują proporcje. Odbywa się to poprzez tworzenie czarnych pasków na krawędziach, gdzie pozostało miejsce. Jest to jedna z najczęściej używanych rzutni.

Stosowanie:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new FitViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow