martes, 12 de diciembre de 2017

Unity II



Mixamo
Para comenzar debemos descargar nuestro personaje y sus animaciones. Para este ejercicio utilizaremos la página web de Adobe, Mixamo.
Primero, descargamos nuestro Character en pose T, es decir, con las piernas rectas y los brazos horizontales.
Click en el Character -> Download
                                        -> Format -> FBX For Unity(.Fbx)
Por último, debemos descargar las animaciones, que para esta actividad serán Idle, Walking y Running.
Click en la animación -> Download
                                         -> Format -> FBX For Unity(.Fbx)
                                         -> Skin -> Without Skin

Unity
Una vez tengamos los personajes debemos importarlos en Unity. Para ello los arrastramos a la ventana Project.
Sin embargo, y a pesar de que tengamos el personaje y las animaciones, no podemos utilizarlas, ya que no existe ningún elemento que las organice y les mande información de cuándo actuar.

Xbot -> Character

Animator
El primer paso para hacer nuestro Character Controller es crear algo que controle a nuestro Character. Para ello vamos a usar el Animator
Window -> Animator
Entonces creamos un Animator Controller al que llamaremos xbot_animation
Project -> Click der. -> Create -> Animator Controller -> xbot_animation
Para que el Animator Controller afecte al Character debemos seleccionar el personaje y
Inspector -> Animator -> Controller -> Click arrastrar xbot_animation

A continuación, tenemos que insertar las animaciones que queremos usar. Para ello las arrastramos al Animator. Primero arrastramos la animación Idle, ya que necesitamos que esa sea nos salga de color naranja, es decir, que sea el Default State (estado de serie). Después tenemos que arrastrar las animaciones Walking y Running. Para que las tres animaciones se repitan en un bucle y no se paren ni vuelvan al lugar de inicio una vez terminadas, debemos seleccionar cada animación y:
Inspector -> Animation
                  -> Loop Time -> Activar
                  -> Loop Pose -> Activar
Después tenemos que crear transiciones entre las distintas acciones mediante:
Click der. en el State -> Make Transition -> Click arrastrar hacia la siguiente acción
Las transiciones deben realizarse en ambos sentidos.

De Idle a Walking y de Walking a Idle
Empezaremos con las transiciones necesarias para que el Character pase de estar inactivo (Idle) a andar (Walking) y a volver a estar inactivo.
A pesar de tener las transiciones hechas entre estas dos animaciones, aún no podemos controlarlas. Para ello debemos crear un Parameter en las transiciones, al cual llamaremos Animation Magnitude, y que indicará a la animación en qué momento debe comenzar.
Animator -> Parameter -> + -> Float -> Animation Magnitude
Entonces realizaremos dos variantes de este Parameter:
·         En la transición de Idle a Walking. Seleccionamos esta transición y:
Inspector -> Conditions -> Animator Magnitude -> Greater -> 0.1
                -> Has Exit Time -> desactivar
·         En la transición de Walking a Idle. Seleccionamos esta transición y:
Inspector -> Conditions -> Animator Magnitude -> Less -> 0.1
                -> Has Exit Time -> desactivar

Playmaker
A partir de este momento debemos utilizar PlayMaker, para así poder añadir distintos estados para hacer posible que el jugador controle al personaje.
El primer paso es seleccionar el Character y añadir un FSM al que llamaremos Movement, y al que añadiremos varios estados.
Inspector -> Add Component -> Play Maker FSM -> Movement

ESTADO 1 -> Idle
A este estado, de momento, le tenemos que añadir tres acciones:
·         La primera acción que debemos añadir es un Get Axis Vector.
State -> Action Browser -> Get Axis Vector
                                           -> Store Vector -> New Variable -> Input Vector
                                           -> Store Magnitude -> New Variable -> FSM Magnitude
·         La segunda acción se trata de un Set Animation Float.
State -> Action Browser -> Set Animator Float
                                           -> Parameter -> Animation Magnitude
                                           -> Value -> FSM Magnitude
                                           -> Every Frame -> Activar
·         La tercera acción consiste en un Float Compare
State -> Action Browser -> Set Animator Float
                                           -> Float 1 -> FSM Magnitude
                                           -> Float 2 -> 0.1
                                           -> Greater Than -> New Event -> To walk
                                           -> Every Frame -> Activar
Al terminar de configurar esta acción nos aparecerá una nota avisando de un error. Solo debemos hacer Click en ella y Unity la solucionará.

ESTADO 2 -> Walking
A este estado debemos añadirle 4 acciones:
·         Para la primera acción debemos copiar el “Get Axis Vector” del ESTADO 1 - Idle
·         Para la segunda acción debemos copiar el “Set Animation Float” del ESTADO 1 - Idle
·         Para la tercera acción debemos copiar el “Float Compare” del ESTADO 1 - Idle, aunque:
-> Less Than -> New Event -> To Idle
-> Greater Than -> None
Aquí también tenemos que hacer Click en la nota del error.

·         Si dejásemos aquí nuestro trabajo el personaje solo andaría hacia delante. Es por eso que hay que añadir una nueva acción que será “Smooth Look At Direction
State -> Action Browser -> Smooth Look At Direction
                                                               -> Target Direction -> Input Vector
Al terminar estos dos estados, debemos añadir dos transiciones con Click arrastrar:
To Walk -> ESTADO 2 - Walking
To Idle -> ESTADO 1 - Idle

Animator
De Walking a Running y de Running a Walking
De vuelta en el Animator, debemos crear las transiciones que llevarán al personaje de andar (Walking) a correr (Running) y viceversa. Una vez creadas, debemos añadir un nuevo Parámetro, que esta vez será Boolean, y lo llamaremos Running. Este hará que al pulsar un botón (true) se active la acción de correr y que, por el contrario, al dejar de pulsarlo (false), vuelva a andar.
Animator -> Parameter -> + -> Bool -> Running
Aquí también debemos crear dos variantes de este Parameter:
·         En la transición de Running a Walking
Inspector -> Conditions -> Add Condition -> Running -> False
                                           -> Has Exit Time -> Desactivar
·         En la transición de Walking a Running
Inspector -> Conditions -> Add Condition -> Running -> True
                                           -> Has Exit Time -> Desactivar

Playmaker
Para hacer que el Jugador pueda accionar la acción correr con un botón, debemos añadir y modificar una serie de estados y acciones en Playmaker:

ESTADO 3 -> Running
A este estado le añadiremos una acción que será Set Animator Bool
State -> Action Browser -> Set Animator Bool
                                           -> Parameter -> Running
                                           -> Value -> Activar
                                           -> Every Frame -> Activar
Después copiaremos las acciones “Smooth Look at Direction” y “Get Axis Vector” del ESTADO 2 - Walking
La última acción que tenemos que crear hará que al dejar de pulsar Shift Click el Character deje de correr:
State -> Action Browser -> Get Button Up
                                           -> Button Name -> Fire 3
                                           -> Send Event -> To Walk
Para finalizar, añadimos una transición a To Walk y con Click arrastrar creamos una transición entre:
To Walk -> ESTADO 2 - Walking

ESTADO 1 -> Idle
Debemos volver al ESTADO 1 -> Idle y copiar el “Set Animator Bool” del ESTADO 3 -> Running, con la diferencia de:
-> Value -> Desactivar

ESTADO 2 -> Walking
Ahora tenemos que añadirle una nueva acción a este estado, que consistirá en asignar la tecla Shift a la acción de correr. Esta acción será Get Button Down.
State -> Action Browser -> Get Button Down
                                           -> Button Name -> Fire 3
                                           -> Send Event -> New Event -> Running
Además, también debemos pegar aquí la acción Set “Animator Bool” que creamos en el ESTADO 3 – Running, cambiando:
-> Value -> Desactivar
Para terminar con el ESTADO 2, tenemos que crear una transición con Click der. -> Add Transition -> Running

Y para terminar con el Character Controller, solo tenemos que añadir transiciones con Click arrastrar entre:
Running -> ESTADO 3 -> Running
Detalles
Aunque hayamos terminado con el Character Controller en sí, aún podemos añadir detalles que lo mejorarán, como por ejemplo que la cámara siga al personaje, que cuando se termine el terreno el Character caiga o que no aparezca ningún texto sobre qué estados están activos mientras nos encontramos en el modo juego

Camera -> Main Camera
Para crear una cámara que siga al personaje debemos crear un Empty Object al que llamaremos Camera Base
Hierarchy -> Click der. -> Create Empty -> Camera Base
Una vez creado, tenemos que meter la Main Camera que nos viene de serie dentro
Hierarchy -> Click arrastrar hacia Camera Base
A continuación, seleccionaremos otro Empty Object dentro del Character, y lo llamaremos Camera Follows. Una vez creado, debemos colocarlo en la mitad del personaje.
Hierarchy -> Click der. -> Create Empty -> Camera Follows
Entonces, copiamos los componentes de este nuevo objeto
Inspector -> Transform -> Ajustes -> Copy Component
Y los pegamos en Camera Base, ajustando el objeto también a la mitad del personaje.
Inspector -> Transform -> Ajustes -> Paste Component Values

Playmaker
El siguiente paso es colocar la Main Camera en la posición que deseemos y añadirle un nuevo estado

ESTADO 1 -> Camera Movement
A este estado le añadimos una acción Move Towards
State -> Action Browser -> Move Towards
                                            -> Target Object -> Camera Follows
                                            -> Finish distance -> 0
Y otra segunda acción que se llamará Mouse Look
State -> Action Browser -> Mouse Look
                                           -> Sensitivity X -> 5
                                           -> Sensitivity Y -> 5
Para una mayor comodidad en el manejo de la cámara a la hora de jugar, podemos seguir los siguientes pasos:
Edit -> Project Settings -> Input
Inspector -> Axes -> Mouse Y
 -> Invert -> Activar
Para finalizar, debemos regresar a los estados del xbot Character, y en la acción Get Axis Vector del
ESTADO 1 - Idle, el ESTADO 2 - Walking y el ESTADO 3, arrastramos la Main Camera.
State -> Get Axis Vector -> Relative To -> Click arrastrar Main Camera

Character Controller
Si queremos que el personaje caiga cuando se termine el terreno, debemos seleccionarlon y añadir un Component al Character, que será un Character Controller, que debemos ajustar al tamaño de nuestro personaje
Inspector -> Add Component -> Character Controller

State Labels
Para terminar, si no queremos que aparezca ningún texto sobre qué estado estamos mientra estamos en el modo juego, debemos irnos a:

Hierarchy -> Play Maker Guy -> Inspector -> Draw Active State Labels -> Desactivar

No hay comentarios:

Publicar un comentario