martes, noviembre 29, 2016

Sistema de entrada unificado y versátil

Aunque no lo creí al principio, incluso con un proyecto 2D aprentemente sencillo (en desarrollo de juegos, casi nada es sencillo) se puede aprender. El fin de semana tuve que reescribir el control del personaje casi completo. Todo el código anterior no servía luego de agregar el joystick virtual, a menos que mantuviese dos formas distintas de controlar el personaje: una para móviles y otra para PC. Y esta última no contemplaba el uso de mandos.
Sin embargo, la solución estaba en el mismo tutorial que utilicé para el joystick virtual, que me sirvió de inspiración para arreglar el sistema de control basado en teclado y convertirlo en algo más portable, utilizando GetAxis() en vez de preguntar si las teclas del cursor han sido presionadas o liberadas. Eso conlleva cambiar el sistema de movimiento a uno basado en vector en vez de cuatro direcciones fijas, pero por suerte, la matemática detrás del asunto es sencilla. Ya lo probé usando un joystick, que es el único mando que tengo a mano, y funciona igual que con WASD y las teclas del cursor. O sea, que el juego ya se puede jugar en PC con teclado o mando.
Ahora solo me falta cambiar todo el sistema de animaciones, el apuntado, y cualquier detalle que se me haya pasado por alto, que siempre hay alguno esocndido por ahí.
Lo aprendido aquí también tiene aplicación en otros proyectos. Ahora sé que la cámara en tercera persona que implementé a principios de año posiblemente necesite una buena reescritura para soportar mandos.
Y ya que hablamos de Unity3D, parece que un viejo problema ha sido corregido: me dicen que ahora sí se puede usar deferred rendering cuando la cámara está en proyección ortográfica. Todo un alivio siquieres hacer una vista isométrica y manejar muchas luces en la escena.

No hay comentarios:

Publicar un comentario en la entrada