Estas dos últimas semanas he estado desarrollando mi tercera aplicación
de ejemplo usando Cardboard. Los objetivos de este ejemplo eran:
- Implementar una interfaz gráfica con diálogos entre personajes.
- Realizar transiciones entre escenarios.
| Ejemplo de caja de dialogo. Se ve el nombre del personaje que habla (en azul) y el texto de lo que está diciendo. |
Este ejemplo está inspirado en una escena del juego de Game Cube Eternal Darkness, en donde el protagonista, Pious, se encuentra en medio de un templo en ruinas. En una cámara del templo hay tres reliquias, cada una representando a una entidad sobrenatural diferente. Pious debe elegir una de ellas. Esta elección define la historia del resto del juego.
Mi ejemplo consiste en un santuario en medio de un bosque. En el santuario hay tres artefactos. Al interactuar con ellos el personaje tiene una visión (o un recuerdo) sobre una conversación con el dios representado por cada uno. Después de que se acaba la conversación el personaje vuelve en sí y puede elegir otra reliquia.
| Una de las reliquias. El jugador puede interactuar con ellas al centrar su mirada y oprimir el botón del Cardboard. |
Un aspecto muy importante al hacer interfaces gráficas para realidad virtual
es que no se pueden colocar elementos "pegados a la pantalla" como
normalmente se hace. En su lugar, la interfaz de ser parte del mundo y tener
coordinadas tridimensionales como cualquier objeto del escenario.
Si uno no quiere perder de vista los elementos de la interfaz al girar la cabeza, uno puede meterlos dentro de la jerarquía de la cámara principal. Al hacer esto hay que tener especial cuidado en que no resulte molesto para los jugadores: generalmente no hay problema con elementos pequeños, pero cuando los objetos son muy grandes puede causar mareo.
Otro aspecto que hay que tener en cuenta es que los elementos de la escena que están más cerca de la cámara pueden obstruir la vista de la interfaz.
Si uno no quiere perder de vista los elementos de la interfaz al girar la cabeza, uno puede meterlos dentro de la jerarquía de la cámara principal. Al hacer esto hay que tener especial cuidado en que no resulte molesto para los jugadores: generalmente no hay problema con elementos pequeños, pero cuando los objetos son muy grandes puede causar mareo.
Otro aspecto que hay que tener en cuenta es que los elementos de la escena que están más cerca de la cámara pueden obstruir la vista de la interfaz.
| Canvas de la interfaz con coordenadas en el mundo y cómo hijo de la cámara. |
Cómo lo que quería hacer era diálogos, decidí que el jugador no pudiera cambiar la orientación de la cámara mientras no se acabara la conversación. Para evitar cambios abruptos e incómodos seguí los siguientes pasos siempre que iniciaba una conversación:
- El jugador hace clic en el objeto.
- Se realiza un fade out de la pantalla hasta que solo se ve negro.
- Se coloca la cámara en la posición y rotación deseada.
- Se detiene la captura de movimiento y rotación.
- Se pone una imagen de fondo para la conversación.
- Se realiza un fade in de la pantalla hasta que se puede ver de nuevo.
Por último, vale la pena mencionar la herramienta que utilicé para el manejo de la narrativa: Fungus.
Se puede descargar gratis desde el Asset Store de Unity y facilita enormemente el manejo de toda la parte narrativa del juego. Definitivamente la recomiendo.
Aquí dejo uno de los tres diálogos del ejemplo:
