Al final me he puesto en marcha en la
tarea de migrar el juego a Unity 5. He tenido que comenzar un
proyecto desde 0 e ir añadiendo las piezas que tengo poco a poco.
Hay cosas que tendré que sacrificar, otras hacerlas de otras
maneras, pero va a aumentar la calidad, y puedo hacerlo todo con la
versión gratuita sin recurrir a la pro de formas poco limpias.
Lo primero ha sido colocar el Skybox
(al que por cierto he dado una capa de niebla azulina para que
parezca más lejos), el personaje, e internar que se mueva
correctamente. El sistema de controlador para personaje que tiene
incluido Unity 5 es bastante mejor que la mierda que tenía hecho el
obrero en la versión anterior. Así que he probado si podía usar su
sistema, mortificándolo a mi gusto para que funcione como el que
tenía, y fiarme también de su sistema físico y de colisiones. Esto
significaría tirar el trabajo que hice adaptando el
SuperCharacterController,
pero creo que merece la pena. Lo tenía funcionando en un proyecto
aislado, de prueba, y estaba teniendo problemas para integrarlo con
el proyecto del juego. Y tampoco se llevaba bien con las animaciones
de Mecanim.
Así que ese trabajo está tirado, pero al usar algo que viene en Unity 5 por defecto, tendré más fácil obtener documentación, soluciones a problemas comunes y seguramente tenga menos problemas en un futuro cuando necesite meter cosas nuevas.
El controlador de movimiento de Unity
tiene movimiento andar / correr, con giro pequeño y giro grande a
izquierda y derecha, todo como un grid 2D. También tiene lo mismo
yendo de cuclillas, y salto, dependiendo de la pierna de entrada al
salto, en estático y siempre cae sobre las dos piernas. El
controlador para movimiento es bastante realista, pero el salto no
pega, parece mal hecho. Sin embargo en un entorno menos realista,
como mi personaje queda bien.
Así que lo que hice fue quitar cosas,
mi personaje no va a poder ir agachado, así que todos los estados,
animaciones y código de andar en cuclillas fuera (aunque dejé una
animación para hacer la transición salto-andar en ciertas
situaciones). Tampoco me hacen falta los giros con animación, mi personaje no va a
ir girando poco a poco y con animación, si el jugador da una
dirección en el joystick el personaje encarará esa dirección
automáticamente, como en los Crash. A lo mejor esta aproximación
más de dibujos no es tan habitual en los controles actuales, pero me
parece que funciona bien para controles no realistas, y me va a
ayudar en mi juego, donde no tengo capacidad artística para ofrecer
algo muy realista. Así que quité las animaciones de giros, y lo que
era una composición 2D direccional se queda en 1D, ahora el
movimiento solo depende de la velocidad, andar más o correr más,
pero no de la dirección. El script de control de personaje tiene
unos métodos para ayudar al giro más allá de la animación y
usando valores altos en el giro por segundo, tanto parado como en
marcha, consigo que el personaje encare la dirección de movimiento
de forma automática.
El salto lo dejo como está, y no queda
tan mal, creo que con un personaje más de dibujo animado y un
conjunto de animaciones menos realista este salto encaja mejor. Tuve
que añadir una segunda capa con una máscara para que el personaje
cierre la mano donde tiene la espada siempre. También tuve que
cambiar algunas cosas en el script, para que los rayos que tira para
ver si está cerca del suelo solo se hagan contra las capas
apropiadas (suelo, obstáculos), y para que el control se adaptase a
los botones que quería. Aunque Unity 5 añade unas clases adaptadas
para el uso tanto móvil como en PC, que a lo mejor hace que parte de
mi estructura de clases sea innecesaria, pero todavía no he acabado
de adaptar la parte de controles.
Así es como queda, puede parecer en los saltos o en algunos momentos que este aspecto de dibujo en las animaciones no es bueno. Pero hay que recordar de donde venimos, así es como se movía el personaje en la versión inicial del juego:
No hay comentarios :
Publicar un comentario