Sprint 2 - Proyecto Final

Descripción del Proyecto

Para el proyecto final se propuso hacer un fruit ninja en WebGL en 3D. Para soportar 3D quiero modificar la mecánica del juego.

En la versión que planeo crear el jugador se encuentra en un salón. El jugador se puede mover al rededor del salón como si estuviese en un first-person shooter. El objetivo del jugador es prevenir que los objetos (frutas) que estén cayendo del techo toquen el suelo. Para lograr esto el jugador debe desplazarse al rededor del salón e ir pegándole (click) a los objetos que están cayendo. Como en la versión original, el jugador solo puede dejar caer 3 veces un objeto al piso. Así mismo, existen objetos que al destruirse causan que el jugador pierda automáticamente (bombas).

Estado Actual

Luego de haber creado una serie de objetos y clases útiles para acelerar el desarrollo del proyecto final en el Sprint 1, en el Sprint 2 me dedique a lograr mover la cámara como si se estuviese en un first person shooter. El código se encuentra aquí. Un demo funcional se puede encontrar acá. Nótese que la misma página se utiliza para mostrar la versión más reciente del juego, es decir, puede que en un futuro la aplicación mostrada en la página corresponda a la implementación de un sprint más adelante. Independientemente, en el repositorio de Github hay un release que corresponde a esta versión del código que se puede descargar y correr localmente.

Código de Interes

El browser permite capturar el mouse del usuario de tal forma que uno pueda garantizar que este nunca llegue al borde de la pantalla. Esto es útil ya que el mouse se puede utilizar para mover la cámara sin necesidad de dejar el click presionado para rotarla. Para capturar el mouse se utiliza el siguiente segmento de código:

 

Esto se puede interpretar como cuando el usuario le de click al canvas donde estamos dibujando, le vamos a señalar al browser que vamos a bloquear el mouse.

Después de capturar el mouse, llamamos a la siguiente función cada vez que este se mueva:

Estos ángulos que calculamos en esta función son utilizados a la hora de generar la matriz de lookAt para ver el juego desde la perspectiva del usuario. La creación de la matriz que funcionará de cámara se hace en el siguiente fragmento en la clase Scene.


Bitácora de Tiempos

Para lograr simular el movimiento del usuario como si se estuviese en un first person shooter, se realizaron las siguientes tareas con sus respectivos tiempos estimados y cuanto realmente me demoré.


  1. Tarea: Lograr situar la cámara adentro de un cubo donde se mapea una textura distinta a cada cara.
    Tiempo Estimado: 4 horas
    Tiempo consumido: 7 horas
  2. Tarea: Capturar el mouse del usuario dentro del canvas de tal forma que este no se pueda salir de el sin importar cuanto lo mueva.
    Tiempo estimado: 1 hora
    Tiempo consumido: 1 hora
  3. Tarea: Mover la cámara a medida que el usuario mueve el mouse.
    Tiempo estimado: 3 horas
    Tiempo consumido: 4 horas
  4. Tarea: Mover la cámara a medida que el usuario mueve el mouse Y usa las teclas "W", "A", "S", "D".
    Tiempo estimado: 5 horas
    Tiempo consumido: 5 horas

Comentarios

Entradas populares de este blog

Texturas

Ejemplo Processing P5.js

Sprint 4 - Proyecto Final