Comunidad orientada al desarrollo de videojuegos

Unity3D Introduccion a Mecanim

¡Hola a todos! Después de una semanita y pico de vacaciones, he vuelto con un pequeño tutorial sobre una gran herramienta que tiene Unity3D, vamos a ver una instrucción a Mecanim. Nos va a ayudar con el soldado de la demo de Bootcamp https://www.assetstore.unity3d.com/#/content/1376

image

El objetivo es crear una transición suave entre las animaciones de Idle, Walk y Run, tanto ascendentemente como descendentemente, usar parámetros desde un script que condicionaran el cambio entre animaciones y así aprender a usar la herramienta.

Antes de nada, vamos a necesitar un pequeño Script que hará que se mueva nuestro modelo gradualmente hacia la derecha con una aceleración y una deceleración.

public class MovementScript : MonoBehaviour
{

public float maxSpeed = 10;
public float smoothTime = 0.3f;
private float speed = 0;
private float currentVelocity = 0;

public Animator soldierAnimator;

private Transform myTransform;

void Awake()
{
myTransform = transform;
}

void Update ()
{
speed = Input.GetAxis("Horizontal") > 0.1
? Mathf.SmoothDamp(speed, maxSpeed, ref currentVelocity, smoothTime)
: Mathf.SmoothDamp(speed, 0, ref currentVelocity, smoothTime);

myTransform.position += Vector3.right * speed * Time.deltaTime;
}
}

Me gustaría resaltar el objeto soldierAnimator del tipo Animator, va a ser el objeto que vamos a usar para modificar los parámetros que influirán en la animación. Le vamos a enviar la velocidad del soldado para que en función de su valor, haga una transición entre animaciones.

Añadimos esta línea al script al final del método Update()

soldierAnimator.SetFloat("Speed", speed);

Cuando creemos el Animator Controller, crearemos un parámetro llamado Speed al que le asignaremos el valor en el Update como vemos en el código anterior.

 

Vamos a trabajar directamente con el modelo FBX del soldado, olvidándonos del Prefab que hay creado. Lo primero de todo, es irnos a la pestaña de Rig, poner el tipo de animación a Generic e indicar cual es el nodo raíz del esqueleto, en nuestro caso es Pelvis. También podéis asignarle las texturas o lo que queráis, me voy a centrar en la parte necesaria para Mecanim.

image

Esto último, vamos a hacerlo sobre el modelo Soldier.FBX y sobre aquellos modelos FBX que contengan animaciones que queremos usar, si todas las animaciones están en un mismo modelo, no es necesario, pero si vienen en diferentes modelos, habría que hacerlo para cada uno de ellos y que así podamos usar sus animaciones. Otra cosa a tener en cuenta, es que debemos marcar las animaciones como Loop si fuera necesario, en Idle, Walk y Run, debemos marcarlo en la pestana de Animations.

image

 

Ahora viene lo interesante, nos creamos un Animator Controller con botón derecho –> Create –> Animation Controller sobre el área de Project o bien, con el botón Create de este área.

image

Ahora vamos a abrir la ventana Animator que es donde definiremos las transiciones de las animaciones y los parámetros necesarios. Menú Windows –> Animator

image

 

Con la ventana de Animator abierta, seleccionamos el Animator Controller que hemos creado anterior mente para editarlo en esta ventana.

image

 

Idle aparece en naranja porque es la primera que hemos arrastrado, esta será la animación por defecto.

Una vez tenemos todas las animaciones que queremos usar, vamos a crear transiciones entre ellas, esto es tan sencillo como seleccionar la animación origen, darle botón derecho –> Make Transition y seleccionar la animación a la que queremos que haga la transición.

image

¡Sencillo! Vamos a crear todas las transiciones necesarias, de Idle –> Walk –> Run –> Walk –> Idle.

El resultado final:

image

Lo siguiente sería modificar las transiciones a nuestro gusto para que sea una animación real, pero antes vamos a crearnos el parámetro Speed que vamos a necesitar para que nos indique cuando vamos a cambiar de una animación a otra.

En la ventana Animator, abajo a la izquierda, tenemos una pestaña que pone Parameters, si pulsamos sobre el símbolo + que tiene, nos salen los posibles tipos de parámetro que podemos seleccionar, como nuestra variable speed del script es Float, vamos a seleccionar este tipo, una vez hecho esto, le pondremos el nombre de Speed al parámetro, que es como lo estábamos llamando desde el scrip “soldierAnimator.SetFloat(“Speed”, speed);”

image

Tan sencillo como esto para que en todo momento sepamos que valor tiene la variable “speed”.

Ya tenemos todo lo necesario para editar las transiciones de las animaciones, para ello, solo tenemos que seleccionar la fecha que indica la transición entre una animación y otra. La flecha que indica la transición que estamos editando, se pondrá de color azul. En el inspector saldrán todas las opciones que podemos modificar de la transición, debemos jugar un poco con el tamaño de la misma y cuando entra la animación de origen, no tengáis miedo a trastear.

image

Una de las cosas que tenemos que hacer, es indicar cuando se va a realizar la transición, como tenemos acceso al parámetro Speed, vamos a usarlo. En la primera transición, la de Idle –> Walk, vamos a indicarle que se produzca cuando el Speed es mayor de 0.1 esto quiere decir q ya se ha empezado a mover el Soldado, para ello, vamos al apartado Conditions en el Inspector, desplegamos el primer combo y seleccionamos Speed que es la condición que queremos asignar, en el siguiente desplegable, seleccionamos Greater, para indicar que se cumpla la condición cuando el valor es “mayor de” y le asignamos el valor 0.1

image

Ahora, cuando el valor de Speed sea mayor de 0.1 se ejecutara la transición entre estas 2 animaciones.

Una vez terminadas todas las transiciones, solo tenemos que asignarle el Script que hemos creado al soldado, asignarle también el Animator Controller que hemos hecho al Controller del componente Animator de nuestro soldado y arrastrar el GameObject del soldado a la propiedad Soldier Animator de nuestro script, debería quedar algo así:

image 

Como es un proceso repetitivo y algo creativo, si te has perdido un poco o no te ha quedado claro del todo, no te preocupes, he hecho un video donde podéis ver como hago cada uno de los pasos indicados.

Video demo del articulo Introducción a Mecanim

Podéis ver el resultado final aquí:

https://db.tt/ZUKO4r2h

Pulsa la A para mover al soldado.

 

Y podéis descargaros el paquete con el proyecto aquí:

https://db.tt/gKbXtIai

Veréis que esta 2 veces, una vez lo he hecho para el post y otra para el video.

¡Un saludo!

, ,

One thought on “Unity3D Introduccion a Mecanim

Leave a Reply