Puedes descargar el código fuente de este proyecto en la tarjeta de más abajo. No es necesario que pagues por él pero si quieres apoyar este proyecto y futuros proyectos puedes pagar el precio sugerido o indicar tu propio precio. Si este producto recibe apoyo voy a actualizarlo con más mecánicas, por ejemplo más niveles y un selector de niveles.
Un personaje se encuentra atrapado en el interior del laberinto en el que hay solo una puerta para escapar. La salida se encuentra bloqueada y para abrirla hay que encontrar la llave, la cual aparecerá cuando hayamos encontrado un conjunto de objetos.
Muévete con las teclas WASD o las flechas de dirección y orienta la cámara con el mouse. Pasa por encima de los objetos para recogerlos.
Este proyecto comenzó siendo más simple a como se ve en la compilación de Unity WebGL de más arriba, ya que se trataba de un trabajo por encargo con unas consignas claras que hacían énfasis en la lógica y mecánicas del juego mas que en el apartado gráfico.
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.
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.
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 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 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.