Este artículo va a ser un poco un
cajón de sastre sobre todos los aspectos del movimiento del
personaje que no he tratado ya.
En la parte de ataque finalmente he dado 3 movimientos de ataque, lo cual lleva 7 animaciones, las cosas se complican. Si damos al botón de ataque el personaje dará una estocada, y si no hacemos nada más volverá a posición neutral. Eso ya son 2 animaciones. Pero si mientras da la primera estocada, volvemos a dar al botón de ataque hará un segundo ataque, un combo. Así que hace falta la animación del segundo ataque y la de volver a posición neutral desde el segundo ataque. Ya van 4 animaciones, y también he dado opción a atacar mientras estamos en el aire. Esto es un poco más complicado, tiene la animación de coger impulso en el aire para dar el golpe, después una pequeña animación de 2 frames que es la de caer dando el espadazo, que al no saber cuánto vamos a caer necesitamos una pequeña en bucle, y por último la de acabar de caer y recoger hacia atrás. En total 7.
La parte de ataque aéreo va en una sub-máquina de estados porque me estaba dando problemas. Eso hace que el diagrama quede más claro al tener ahí solo un estado y no los 3 que tiene dentro la máquina. ¿Y por qué no he hecho esto con más acciones para dejar un diagrama de primer nivel más sencillo? Porque cuando tienes una submáquina no puedes controlar bien las transiciones de los estados de la submáquina a otros estados. Funciona, pero se inventa la transición por defecto, y en algunas me gusta meter la mano y hacer que la transición sea más rápida, lenta, se de antes o después.
Otra cosa que he limitado es cuando se
puede girar. El giro en mi control es libre, podemos girar todo lo
que queramos en cualquier momento, pero cuando se trata de atacar con
la espada era demasiado, podías dar casi 360º con la estela
siguiendo todo el movimiento. Y ya que el atacar te frena si vas
corriendo, he preferido que una vez que inicias un ataque en una
dirección no puedas girar hasta finalizar el ataque. Lo que sí he
dejado son unos instantes para cambiar la dirección entre el primer
y segundo ataque del combo. De esta forma podemos dar rápidamente
con la espada a un enemigo a la izquierda y que el segundo ataque sea
contra uno a la derecha. Me ha parecido que así es lo
suficientemente dinámico.
He tenido problemas con la detección
del suelo. Algo que parecía más que controlado, que lo da por
defecto el controlador de personaje de Unity, pero con algunas
animaciones dejó de funcionar. Sigo sin entender bien porqué, pero
con algunas animaciones la posición del personaje que marcaba
quedaba bastante por debajo del personaje de verdad, y esto hacía
que estuviera lanzando los rayos para encontrar el suelo por debajo
del suelo, por lo que nunca sucedían las transiciones de aterrizar.
Por ejemplo dar un salto y que el personaje se quedase en esa postura
de cuclillas que tenía en el salto para siempre, a pesar de estar
aparentemente a nivel de suelo ya. Y se produce un bloqueo, no puedes
manejar más al personaje, jode el juego entero, es un problema
serio.
Al final he tomado una solución algo
peregrina, pero que parece funcionar. En lugar de mandar los rayos
desde la posición del personaje lo hago desde el hijo que contiene
la malla, el cual está medido desde el centro de masas, osea desde
la cintura del personaje más o menos, y bajo un poco ese inicio de
rayo, de tal forma que el rayo ahora surge desde la mitad del muslo
más o menos. Y en las animaciones donde tenía problemas, se lanza
desde más abajo, la pantorrilla, pero nunca llega a quedar por
debajo del personaje y por lo tanto el suelo no puede quedar entre el
personaje y el inicio del rayo. En las pruebas que he hecho no he
vuelto a tener esos atranques en una animación.
Otro problema que surgió fue con la
capsula del collider. Ya había explicado que en algunas animaciones
puse una curva para cambiar su altura y posición y ajustarse bien a
la silueta del personaje en esa acción. Y que si alguna animación
tenía transiciones con las animaciones afectadas también intentaba
coger el valor. Pero ahora me ha dado problemas en animaciones que no
tenian nada que ver, seguía pidiendo esos valores y al no tener
curva ponía las cosas a 0, y el collider acababa como una pequeña
pelota a los pies del personaje. Me ha tocado poner las dos curvas en
todas las animaciones usadas.
Y por último comentar un pequeño bug
que no afecta al juego y me hace gracia. El efecto de glow que he
añadido, al ser selectivo en teoría solo afecta a los materiales de
tipo específico con unos shaders especiales que venían en el mismo
paquete. Sin embargo si hago que se vean los gizmos en la pantalla
del juego, las líneas que representan colliders, posiciones de
peso... llevan glow, no se muy bien por qué. Curioso.
No hay comentarios :
Publicar un comentario