En este video te explicamos en detalle todo el proceso para publicar una Aplicación Android…
Creación de videojuego en Unity 3D (I): estructura y elementos
5.
Creación de videojuego en Unity 3D (I): estructura y elementos
Vamos a desarrollar un videojuego en Unity de tipo FPS(*). Este proyecto nos sirve de ejemplo para mostrar la implementación de varios elementos muy utilizados, como el control de colisiones o el cómo establecer una estructura básica de desarrollo de un videojuego completo.
Juego FPS: First-Person Shooter o también conocido por juego en primera persona
En cuanto a la mecánica del juego en sí, será muy simple. Consistirá en defendernos, disparando con nuestra arma, de un enemigo que nos perseguirá y atacará a lo largo del mapa-escenario que hemos diseñado. En el siguiente video puedes ver una demo del juego.
En esta publicación vamos a describir la estructura y elementos de este videojuego. En el siguiente tutorial de esta serie, veremos los scripts necesarios para implementar la lógica del juego, y allí podrás descargar el proyecto para importarlo a tu equipo. Por último, publicaremos un video con la explicación del proyecto completo.
Desde el punto de vista de la jugabilidad del mismo, podemos destacar los siguientes aspectos:
- Cámara situada desde el punto de vista del personaje principal, que proporciona una mayor visualización del entorno que rodea al jugador.
- Lanzamiento de proyectiles, que además de mostrar una ráfaga del recorrido de la bala disparada, terminará ejecutando una explosión al colisionar con un objeto.
- Lógica de barra de energía del personaje, que describirá el daño recibido por parte del enemigo.
- Personaje enemigo que seguirá al personaje manejado por el usuario, ocasionándole daño cada vez que colisione con él.
- Lógica de sonidos asociados a:
- Disparo del arma del personaje manejado por el usuario
- Colisión del enemigo con un proyectil
- Colisión del enemigo con el jugador
- Colisión entre el jugador y el objeto de vida
- Menú principal para el inicio del videojuego, además de pantalla de juego superado y game over, con la posibilidad de volver a comenzar el videojuego en ambos casos.
- Control de puntuación al acertar con un proyectil al enemigo (se visualiza en pantalla junto al arma del personaje).
- Dos controles, a modo de joystick, para manejar el videojuego desde la pantalla táctil de un dispositivo Android. Además se controlará en todo momento una segunda pulsación, en cualquier lugar de la pantalla, para el lanzamiento de proyectiles.
- Objeto de vida, que será creado cuando un número determinado de proyectiles alcancen al enemigo, con las siguientes características:
- El número de colisiones deberá ser múltiplo de 100.
- Se establecerá un tiempo para su eliminación de la pantalla. Inicialmente se establece en 10 unidades
- Se implementa un sistema de niveles, a partir del número de impactos que reciba el enemigo, aumentando su velocidad
- Sólo será posible coger el objeto de vida en caso de haber recibido daño con anterioridad.
- Se mostrará un punto de mira, para mayor control de la dirección del disparo, que se activará cuando el personaje esté en movimiento.
- Pantalla de pausa, que permite al usuario detener el juego y continuar exactamente en el mismo estado que antes de su pausa. También será posible salir del videojuego desde este pantalla.
Elementos del videojuego
Los elementos necesarios para la creación del proyecto que denominaremos «FPS Game» son:
Dos escenas que proporcionen la lógica de un menú principal y un primer nivel completamente funcional.
Por un lado se define una escena denominada «MenúInicial«, formada para dos GameObjects, uno de tipo Camera, y otro que definirá un componente de tipo Cube, encargado de controlar la pulsación de la pantalla para iniciar la partida.
La otra escena construida, denominada «AcademiaAndroidFPS», implementará toda la funcionalidad del videojuego.
Para el uso de ambas escenas será necesario seguir los mismos pasos que para la creación de niveles en un videojuego, que ya vimos en un anterior tutorial.
Para establecer la lógica de navegación en el videojuego, será necesario añadir y ordenar las diferentes escenas construidas, a través de la opción «File > Build Settings...», y pulsando sobre el botón «Add Current«, se añadirá la escena que está abierta en ese momento.
GameObject «Golem«, que nos permite implementar un personaje enemigo en el escenario con su propia IA (inteligencia artificial). Este personaje podrás descargarlo desde la Asset Store de Unity, de forma gratuita.
GameObject «Jugador«, que además de construir toda la funcionalidad del personaje que manejará el usuario, implementa la cámara principal del videojuego.
GameObject «PantallaGameOver» donde se define un GameObject de tipo Camera denominado «Cámara GameOver«, que se activará al gastar la vida del personaje del usuario. Este objeto estará a su vez formado por varios componentes de tipo TextMesh, que mostrarán información de la puntuación conseguida por el usuario.
GameObject «PantallaNivelSuperado» donde se define un GameObject de tipo Camera denominado «Cámara Nivel Superado«, dónde se definen varios componentes de tipo TextMesh, que mostrarán los puntos conseguidos, además de un mensaje de enhorabuena.
Esta pantalla se activará al alcanzar la puntuación establecida en la variable de tipo
int finalizarJuego del script «BarraVidaEnemigo.cs"
.
GameObject «PantallaPausa» donde se define un GameObject de tipo Camera denominado «Cámara Pausa», dónde se define un componente de tipo TextMesh, que mostrará el mensaje de «Juego pausado«.
Esta pantalla se activará al pulsar el botón implementado en tiempo de ejecución mediante la clase GUI. En el supuesto de pulsar sobre el mensaje «Salir del juego«, se finalizará la aplicación.
Prefab «Energía«, que se instancia cumpliendo con la premisa de que el objeto enemigo reciba un número de colisiones establecidas, por parte de los proyectiles lanzados por el personaje del usuario (al alcanzar el número de colisiones, se creará el objeto Energía en pantalla, que aumentará la vida del personaje al contactar con el).
Prefab «bala», que permitirá instanciar nuevos objetos que definen las propiedades necesarias para la detección de colisiones.
Estructura del proyecto
Como se puede apreciar en las siguientes imágenes, se definen dos escenas dentro del proyecto «FPS Game»:
Escena «Menú_Principal«:
Los GameObjects que aparecen en gris, pertenecen a las diferentes pantallas que se activarán al desencadenarse alguno de los siguientes eventos:
- Pantalla de game over al ser derrotado por el enemigo
- Pantalla de nivel superado al vencer al enemigo
- Pantalla de pausa al seleccionar en cualquier momento de la partida el botón asociado a esta funcionalidad
Escena «AcademiaAndroid_FPS«: