¡Crear un videojuego nunca fue tan fácil!
En este artículo vamos a realizar el paso a paso de cómo realizar un videojuego desde el motor de videojuegos de Unity, el videojuego consiste en recolectar diez (10) monedas ubicadas dentro del laberinto, las cuales podrá encontrar recorriendo las diferentes zonas del mismo. A continuación empezaremos con la descripción del diseño del videojuego.
Hierarchy
La jerarquía que compone ese videojuego está conformada por cada “GameObject” presente en el juego, es decir, cada objeto que podemos encontrar dentro de la escena de juego. Algunos de estos objetos los incorporamos desde la opción de GameObjects disponibles y otros fueron importados desde páginas externas descritas más adelante. A continuación, veremos los elementos del Hierarchy del video juego.
Piso
Para el piso se utilizó el GameObject -> Plane, de los cuales se utilizaron 4. Están con su respectiva textura, la cual se describirá más adelante.
Muros
Para el muro se utilizó el GameObject Cube, el cual fue redimensionado para lograr un aspecto de pared, de estos se utilizaron 22. Están con su respectiva textura, la cual se describirá más adelante.
Monedas
Para las monedas se utilizó el GameObject Cylinder, el cual fue redimensionado para lograr un aspecto de moneda, de estos se utilizaron 10. Están con su respectiva textura, la cual se describirá más adelante.
Llave
Para la llave se utilizó un GameObject obtenido de mixamo, este se descargó y luego se importó al proyecto, de esta se utilizó sólo 1. Están con su respectiva textura, la cual se describirá más adelante.
Puerta
Para la puerta se utilizó el GameObject Cube, el cual se encuentra dentro de un GameObject creado para configurar la apertura de la puerta, éste fue redimensionado para lograr un aspecto de adecuado, de este se utilizó únicamente 1. Están con su respectiva textura, la cual permite lograr el parecido a una puerta la cual se describirá más adelante.
Nieve
Para la nieve se utilizó el GameObject -> Effects -> Particle System y se configuro acorde a lo esperado para el videojuego.
Personaje
El personaje es una modelo 3D obtenido de mixamo y se realizó la respectiva animación para poder moverse y funcionar correctamente dentro del juego.
Inicialmente se seleccionaron cada uno de los 4 posibles movimientos del personaje y se cambió el tipo de animación en la pestaña de Inspector, en la sección de Rig, de “Generic” a “Humonoid” para lograr en el personaje un movimiento más “normal” y parecido al de un ser humano.
Luego se seleccionan los 3 últimos y en la misma sección en la opción de Avatar Definition, seleccionamos Copy From Other Avatar y debajo en Source arrastramos el avatar que traía el personaje descargado desde los Assets.
Seguido de esto se configura el avatar con cada uno de los movimientos, al seleccionar cada uno de ellos, en la parte izquierda en la pestaña de Inspector, en la sección de Animation, es necesario que esté configurado de la siguiente manera:
Esto para los 3 modelos que modelarán el movimiento del personaje. Luego de realizar las configuraciones anteriores, se arrastra el personaje a la ventana de Hierarchy. Seguido de esto se deben agregar los componentes de Rigidbody y Capsul Collider para que pueda interactuar con el entorno del juego.
Luego de ello se crea el Script que permitirá configurar la lógica del personaje el cual se describe más adelante. Para configurar los movimientos del personaje se creará una carpeta llamada Animaciones, donde se creará un Animator Controller el cual se llamará Controlador.
Al hacer doble clic en el controlador recién creado habilitará una ventana llamada Animator en la parte superior, en la cual se podrán configurar los movimientos del personaje. Allí se realizará la creación de un nuevo Blend Tree, con clic contrario y selección new Blend Tree y se hace doble clic en él para acceder a la configuración.
Dentro del inspector del BlendTree se cambia el Blend Type, y se agregan 2 parámetros que harán referencia a la velocidad en X y en Y, que primero deben agregarse desde la ventana de parameters ubicada al centro de la pantalla.
Para agregar las animaciones, desde el Inspector se selección el icono + y Add Motion Field y a medida que se va agregando un movimiento, automáticamente se va creando el mapa en el Animator.
Se deben agregar 5 movimientos y se realiza la debida parametrización para que se efectúen cada uno de los movimientos. Al agregar cada uno de ellos automáticamente en el Animator se realiza el mapa de la parte derecha.
- Idle: Se refiere a la posición inicial del personaje, la cuál es quieta o estática.
- Running: Se refiere al movimiento de correr hacia adelante.
- Running: Se refiere al movimiento de correr hacia atrás.
- Left Strafe: Se refiere al movimiento hacia la derecha.
- Left Strafe: Se refiere al movimiento hacia la izquierda.
- Left Strafe: Se refiere al movimiento la derecha junto con una orientación.
- Left Strafe: Se refiere al movimiento hacia la izquierda junto con una orientación
Canvas
Para los mensajes del juego se utilizó el GameObject -> UI -> Canvas el cual contendrá los mensajes que deseamos mostrar en el videojuego. Por eso allí alojamos la descripción inicial, el mensaje que saldrá al cumplir el objetivo del juego, el contador de las monedas recolectadas y el tiempo restante.
Project: Assets
En esta ventana se podrán acceder y gestionar los assets que pertenecen al proyecto. En el panel izquierdo del navegador muestra la estructura de carpetas del proyecto como una lista de jerarquía y al costado derecho se muestran los assets individuales.
La jerarquía que compone ese videojuego está conformada por cada “GameObject” presente en el juego, es decir, cada objeto que podemos encontrar dentro de la escena de juego. Algunos de estos objetos los incorporamos desde la opción de GameObjects disponibles y otros fueron importados desde páginas externas descritas más adelante. A continuación, veremos los elementos del Hierarchy del video juego.
Scripts
Dentro de los scripts que utilizamos para este proyecto encontramos 4 los cuales se describirán a continuación.
DoorKey: Este script está destinado básicamente a la recolección de la llave la cual, de acuerdo con el código, podemos observar que se realizará con la tecla “E”, mensaje que mediante el método OnGUI( ) mostraremos al momento de ejecutar el juego.
DoorScript: Este script está destinado a la acción de abrir la puerta con la llave recolectada.
LogicaPersonaje: Este script como su nombre lo evidencia, es el encargado de toda la lógica del personaje, donde principalmente se configuran los movimientos y la respectiva recolección de las monedas.
Moneda: Este script permite sencillamente configurar el movimiento de las monedas, permite que puedan girar monedas y configura la velocidad de dicho giro.
Timer: En este script se configura todo lo relacionado al tiempo de juego, la duración y habilitación de los respectivos textos y valida qué hacer una vez se cumple el tiempo destina para ejecutar el juego.
Materiales
Dentro de los materiales encontramos las diferentes texturas utilizadas para cada uno de los objetos y el objeto de llave utilizado.
Personaje
Dentro de la carpeta de personaje encontramos 2 carpetas, una llamada personaje, la cual aloja los respectivos modelos de este, los animaciones y las texturas y otra llamada textures que aloja las texturas utilizadas para el personaje.
Imágenes de la ejecución del videojuego
Autor: Jenny Catalina Sua Quimbayo
Editor: Carlos Pinzón
Código: UCRV-8
Universidad: Universidad Central
Fuentes
Don Pachi (30 de junio 2019). Unity 2019: Importar y animar un personaje 3D. YouTube. https://youtu.be/Ay_oy6GXC-s Mirza. (23 de noviembre 2016). Unity VFX – Realistic Snow (Particle System Tutorial). YouTube. https://youtu.be/b8oVAS9IdZM