android - studio - Libgdx Hud con dos etapas
libgdx android studio tutorial (1)
Entiendo correctamente, estás usando scene2d para tu mundo de juego y también para tu HUD. Y el HUD no se superpone al mundo del juego, sino que utiliza su propia porción de la pantalla exclusivamente.
Las etapas no siempre llenan toda la pantalla. No tienen el concepto de llenar o no llenar nada, porque pueden tener objetos que se extraen de la pantalla. Sin embargo, están recortados en un rectángulo definido por su Viewport.
En su caso, parece que necesita dos ventanas gráficas y, por lo tanto, dos etapas. Usted dice que no está utilizando una ventana gráfica, pero sí ... Stage crea automáticamente su propio ScalingViewport configurado como StretchViewport. (ScalingViewport no se menciona en la documentación, que está desactualizado). StretchViewport suele ser malo porque su juego se distorsionará para adaptarse a la relación de aspecto del dispositivo.
ExtendViewports no causa barras negras, siempre y cuando no establezcas un ancho / alto máximo en ellas y creo que suelen ser la mejor opción para cualquier vista del mundo del juego.
Puede configurar sus dos ventanas gráficas para cubrir partes específicas de la pantalla que usted mismo calcule. Dado que este es un caso especializado, creo que tendrá que subclasificar directamente la clase de Viewport (no una de sus subclases) y manipular cada una de ellas usando viewport.setScreenBounds(...)
.
En relación con su última pregunta: sí, cada una de las dos etapas tiene su propia ventana gráfica, y cada ventana gráfica tiene su propia cámara. Una vez que configure sus dos ventanas gráficas para que cada una tenga su propia porción de la pantalla, también puede configurarlas para tratar sus respectivas esquinas inferiores izquierdas como 0,0.
Tengo una aplicación que actualmente funciona con una sola etapa, pero necesito agregar una pantalla / sección lateral como HUD, con puntajes / vidas, etc., de modo que el HUD esté a la izquierda y la pantalla de la mano principal a la derecha . La pantalla principal del juego será arreglada y no se moverá.
De investigar, he encontrado un par de soluciones.
1 - dos etapas 2 - un grupo con dos grupos, posiblemente usando un grupo horizontal 3 - dos cámaras una etapa 4 - una etapa, una cámara, pero cambiando la posición de la cámara para cada grupo de actores.
Creo que la opción 1 es mi preferencia, pero tengo algunas preguntas.
- ¿Las etapas siempre llenan toda la pantalla, o puedo comenzar donde quiero? Esto facilitaría que la pantalla de la derecha calcule las posiciones basadas en 0,0 de esa pantalla en lugar de tener que agregar siempre el ancho del HUD a cualquier cálculo.
- ¿Debo trabajar sobre viewports? Actualmente no estoy usando uno (que creo que significa que mi escenario está configurado para escalar por defecto) pero nada se ve estirado como resultado de esto. No sé mucho sobre los viewports, pero siempre parece haber un compromiso con ellos, es decir, barras negras en la parte superior o lateral.
- Si tengo dos etapas, ¿cada uno tiene su propia cámara? ¿Debo hablar sobre esto? ¿Puedo orientar la cámara de la derecha con una desviación, así que puedo dibujar cosas desde 0,0 con la esquina inferior izquierda del escenario derecho, no con toda la pantalla?
Finalmente, fuera del tema, estoy un poco confundido sobre spritebatch. Actualmente no estoy usando uno, porque uso un escenario. ¿Está bien, o debería seguir usando uno junto con un escenario de alguna manera? Y agregar todos mis actores a eso?