Escapa del Laberinto – Juego de encontrar objetos hecho en Unity

El juego Escapa del Laberinto es un juego en primera persona hecho en Unity y consiste en encontrar una serie de objetos antes de que se acabe el tiempo. Este prototipo fue un trabajo hecho por encargo.

Inicialmente el proyecto era bastante mas simple de lo que se ve en el prototipo de arriba, ya que se trataba de un trabajo con unas consignas claras que hacían énfasis en la lógica y mecánicas del juego mas que en el aspecto gráfico. Luego de entregar el trabajo continué haciendo experimentos de iluminación y post procesado, agregué un modelo 3D de una persona con animaciones hechas en Mixamo para que se proyecten sombras del jugador en las paredes del laberinto. El proyecto no está optimizado para la versión WebGL por lo que es probable que funcione muy lento en pantalla completa.

Objetivo del juego​

Te encuentras en el interior de un laberinto, la única salida se encuentra cerrada y sólo puede abrirse con la llave. En el interior del laberinto se esconden seis objetos. Recorre el laberinto y encuentra todos los objetos para que la llave aparezca. Obtén la llave y escapa del laberinto. 

MOVIMIENTO: WASD CÁMARA: MOUSE

MIRA ESTE MECANISMO QUE HICE CON UNITY, BLENDER Y SUBSTANCE PAINTER
👉

Mecánicas del juego​

A continuación vamos a analizar los distintos elementos del juego.

Personaje controlado por el jugador

El jugador controla al personaje utilizando las flechas direccionales o las teclas WASD, la cámara se controla con el mouse. No recuerdo bien pero puede que se trate del prefabricado «First Person Controller» de Standard Assets.

Objetos a encontrar en el laberinto

Los seis objetos que hay que encontrar aparecen en el laberinto de manera aleatoria y a una cierta distancia entre ellos. Para lograr esto se creo un sistema de instanciación que tiene en cuenta la forma de las piezas del laberinto y las regiones donde podrían aparecer estas piezas.

Los objetos emiten un sonido cuya intensidad depende de la distancia que esté el jugador, cuanto mas cerca se encuentre del objeto mas fuerte se escuchará el sonido, esto es una pista que permite ubicarlos.

Para detectar que el jugador recoge los objetos se utilizan Colliders y el evento OnTriggerEnter, al recoger un objeto se compruba si se han recogido todos los objetos, si esto es verdad se libera la llave.

La llave para desbloquear la salida

La llave es como un séptimo objeto que se instancia usando el mismo sistema que los objetos anteriores, la diferencia es que al hacerlo inmediatamente se desactiva el GameObject de la llave para que desaparezca del escenario, cuando el jugador encuentra todos los objetos se hace aparecer el GameObject de la llave y un cartel en la interfaz gráfica que indica que la llave fue liberada.

La puerta para escapar del laberinto

La puerta es un modelo 3D dividido en dos partes para que pueda abrirse, además hay un Collider justo adelante para comprobar si el jugador se encuentra frente a ella.

Si el jugador entra en la región frente a la puerta se comprueba si ha recogido la llave, si no es verdad la acción queda sin efecto, pero si el jugador tiene la llave la puerta se abre con una animación de rotación para cada objeto de la puerta.

Detalles Técnicos

A continuación vamos a repasar un poco de información sobre el funcionamiento interno de este juego, en primer lugar es un proyecto 3D desarrollado con el motor Unity.

Los modelos 3D del escenario son modelos que hice utilizando Blender y las texturas con Substance Painter, este proceso tomó unas dos horas aproximadamente debido a que ya sabía exactamente lo que tenía que hacer e incluso lo había hecho anteriormente.

Dada la simplicidad del prototipo utilicé una única escena de Unity, por lo que no fue necesario preocuparse por el traspaso de información entre escenas.

Los elementos de la interfaz gráfica del menú principal se encuentran como hijos de un GameObject que está dentro de un Canvas, la interfaz gráfica durante el gameplay también está construida de esa manera, por lo que al iniciar el juego lo que se hace es desactivar el GameObject que contiene los elementos de la interfaz gráfica y activar el GameObject que contiene la interfaz gráfica del juego.

Secured By miniOrange