Wednesday, March 8, 2017

Juego final

Para la última semana termine el desarrollo del juego.

Desarrollo


Finalice la implementación de las siguientes características:

Animaciones de los enemigos:


Para que la experiencia fuera más agradable, le di animaciones a los enemigos que atacan al jugador, existen dos tipos de enemigos, fantasmas y murciélagos, cada tipo tiene en total 4 animaciones, una de movimiento, una de daño recibido, una de ataque y una de muerte. 
Para brindarle las animaciones a los enemigos, use el *la vaina de unity* en donde se definen condiciones de transición entre una animación y otra, luego se manipulan estas condiciones en los scripts de cada object que representa a un enemigo.

Transiciones de estado del animator

Daño a enemigos:


La mecánica principal del juego es que el jugador les hace daño a los enemigos apuntándoles con su cabeza, para lograr que los objetos enemigo reciban este daño es necesario hacer un raycast desde la cámara del jugador, y si este raycast colisiona con el mesh de algún objeto enemigo, se le reduce su vida que está representado por una variable numérica.

Script para identificar que el enemigo sufrio daño


 Cuando un objeto enemigo recibe daño, se muestra la animación de daño, si el contador de vida del enemigo llego a 0, se muestra la animación de muerte y se elimina el objeto de la escena.

Animar muerte de enemigo


Existiran 4 tipos distintos de enemigos, un fantasma pequeño, uno grande, un murciélago pequeño y uno grande. Cada uno tendrá diferentes valores de velocidad de movimiento y vida, esto con el fin de que haya más variedad en el juego.

Al eliminar a todos los enemigos se gana el juego.

Daño jugador:


Cada vez que un enemigo llegue a la posición del jugador, el jugador recibirá cierta cantidad de daño, para esto se usara la distancia que halla entre los enemigos y el jugador, si en algún momento esta distancia se vuelve muy pequeña, el jugador empezara a recibir daño y se mostrara la animación de ataque para los enemigos.

Script para identificar cuando atacar al jugador



Si la vida del jugador llega a 0 se pierde el juego, nuevamente el tipo del enemigo determina el daño que recibe el jugador.

Animar ataque de enemigo


Integración con Oculus:


Para que el juego funcionara correctamente con el Oculus, se cambió que el movimiento de rotación de la cámara no fuera con el mouse sino con las entradas que da el Oculus, de este modo se integra de una manera que no provoca tanto mareo porque el jugador estará quieto en una sola posición y solo podrá mover su cabeza.
Posicion del jugador respecto a los enemigos

Final experiencia:


Luego de crear el juego y con las experiencias y demos hechos anteriormente con el Oculus, vi que hay un buen potencial para hacer cosas interesantes, sin embargo, existen limitaciones muy grandes gracias al mareo que pueden generar ciertas experiencias, además de que los datos de entrada generados por el Oculus solo son muy pocas.


Video: