Buscar..


Miradores

Para admitir múltiples resoluciones y relaciones de aspecto, Libgdx usa los llamados Viewports .
Hay algunos tipos de Viewports que utilizan diferentes estrategias para manejar múltiples resoluciones y relaciones de aspecto.
Una Viewport utiliza una Camera debajo del capó y administra su viewportHeight de viewportHeight de viewportHeight y viewportWidth . Opcionalmente, puede darle a la Viewport una Camera en su constructor, de lo contrario usará una Camera OrthographicCamera por defecto:

private Viewport viewport;
private Camera camera;

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

Además, debe especificar worldWidth y worldHeight para el constructor de la ventana worldHeight . Este espacio representará el sistema de coordenadas virtual que utilizará para especificar la posición de los objetos que se dibujarán y los tamaños. La transformación de la ventana gráfica, que se puede aplicar a un SpriteBatch, por ejemplo, se encargará automáticamente de transformar las coordenadas lógicas en coordenadas reales de la pantalla, de una manera que se ajuste al tipo real de ventana gráfica que esté utilizando. Por ejemplo, al usar una proyección ortográfica ( OrthographicCamera , que es la predeterminada): si su tamaño del mundo es 12.8 por 7.8 metros y la pantalla de su dispositivo es de 2560x1560 píxeles, entonces su mundo se proyectará dinámicamente con 200 píxeles por metro.

Cuando cambia el tamaño de la Viewport (por ejemplo, si la orientación de la pantalla del teléfono inteligente está cambiando), debe informar a la Viewport sobre ese cambio. luego actualizará automáticamente la viewportHeight la Camera la viewportHeight y la viewportWidth viewportHeight viewportWidth :

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

Los Viewport también administran el OpenGL Viewport y modifican el área de dibujo según sea necesario.

Los Viewport también se encargan de convertir las coordenadas de la pantalla en coordenadas del juego, lo que se necesita especialmente para la selección:

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);
}

Viewports integrados

Hay un par de viewports incorporados, que cada uno hace cosas diferentes. Aquí hay una lista de los nombres y sus descripciones:

Nombre de la ventana gráfica Descripción
StretchViewport Estirará la pantalla. No hay barras negras, pero la relación de aspecto puede estar desactivada.
FitViewport Maximizará su tamaño basado en la relación de aspecto. Podría tener barras negras.
FillViewport Es lo mismo que un FitVieport, pero siempre llena la pantalla completa.
ScreenViewport Siempre llena la pantalla completa, pero no cambia el tamaño de ningún niño.
ExtendedViewport Mantiene la relación de aspecto del mundo sin barras negras al extender el mundo en una dirección
CustomViewport Una vista programada personalizada. Puede tener barras negras y mantener la relación de aspecto.

Viewports personalizados

Usted puede hacer su propio viewport personalizado. Puede tener barras negras y puede o no mantener su relación de aspecto, dependiendo de cómo lo programes. Una vista personalizada se vería así:
public class Tutorial extends Viewport . Necesitaría anular la update(width, height) , pero eso es todo.

Otro intento sería extender el ScalingViewport genérico y proporcionar otro Scaling que aún no se haya suministrado. Supongamos que lo establece en Scaling.none . Eso se vería algo así: Ejemplo de imagen Si desea alguna referencia, puede encontrar las clases de viewport integradas aquí mismo .

StretchViewport

El StretchViewport es un Viewport tipo, que apoya un tamaño de pantalla virtual.
Esto le permite definir un ancho y una altura fijos (independientes de la resolución).
El StretchViewport , como su nombre lo indica, estira la pantalla virtual, si la relación de aspecto virtual no coincide con la relación de aspecto real. El OpenGL Viewport no se modificará y no aparecerán barras negras.

Uso:

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 son viewports que siempre mantienen la relación de aspecto. Lo hace creando barras negras en los bordes donde queda espacio. Este es uno de los viewports más utilizados.

Uso:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow