< Return to Video

Animator Scripting - Unity Official Tutorials

  • 0:00 - 0:02
    En esta lección nosotros estaremos abordando
  • 0:02 - 0:06
    algunos de los usos más comunes de la clase animator.
  • 0:06 - 0:09
    Para una documentación completa de la clase animator
  • 0:09 - 0:12
    vea el link de documentación abajo.
  • 0:13 - 0:15
    Con el fin de afectar las transiciones entre los estados
  • 0:15 - 0:18
    de un animator controller nosotros necesitamos configurar
  • 0:18 - 0:20
    los parámetros del animator a unos valores apropiados.
  • 0:21 - 0:23
    Para hacer esto nosotros necesitamos utilizar algunas
  • 0:23 - 0:25
    de las funciones de la clase animator.
  • 0:26 - 0:30
    Aquí nosotros tenemos una escena con un modelo Ethan.
  • 0:30 - 0:33
    Ethan tiene un componente animator
  • 0:33 - 0:36
    y un script adjunto llamado Ethan Script.
  • 0:37 - 0:39
    El componente animator está utilizando un
  • 0:39 - 0:41
    controller llamado EthanController.
  • 0:42 - 0:44
    Si abrimos EthanController
  • 0:44 - 0:46
    nosotros podemos ver que hay 4 estados.
  • 0:46 - 0:50
    Idle, Walk, Run y Jump.
  • 0:51 - 0:53
    Adicionalmente hay 2 parámetros.
  • 0:53 - 0:55
    Un float llamado Speed y un
  • 0:55 - 0:57
    trigger llamado Jump.
  • 0:58 - 1:00
    El controller está configurado de tal manera
  • 1:00 - 1:03
    que Ethan hará una transición de Idle a Walk
  • 1:03 - 1:06
    a Run básandose en el parámetro Speed.
  • 1:07 - 1:10
    Además, si el parámetro Jump es activado
  • 1:10 - 1:12
    mientras Ethan está corriendo Ethan va a entrar
  • 1:12 - 1:14
    en un estado Jump.
  • 1:15 - 1:17
    Todas las animaciones del modelo Ethan
  • 1:17 - 1:19
    están controladas por estos 2 parámetros,
  • 1:19 - 1:21
    los cuales nosotros vamos a aprender a controlar
  • 1:21 - 1:23
    con nuestro script de Ethan.
  • 1:24 - 1:27
    Dentro del Ethan Script nosotros primero tenemos que crear
  • 1:27 - 1:30
    una variable animator llamada anim
  • 1:30 - 1:33
    para contener nuestro objeto animator.
  • 1:33 - 1:36
    Nosotros obtenemos una referencia a este objeto animator
  • 1:36 - 1:39
    en el método start escribiendo
  • 1:39 - 1:43
    anim = GetComponent
  • 1:44 - 1:47
    Para más detalles acerca de la función GetComponent
  • 1:47 - 1:49
    vea la lección vinculada abajo.
  • 1:50 - 1:52
    Nuestro animator controller está configurado
  • 1:52 - 1:54
    para que el parámetro speed dicte
  • 1:54 - 1:57
    que animación de movimiento está reproduciéndose.
  • 1:58 - 2:00
    Nosotros podemos utilizar el input del jugador para
  • 2:00 - 2:01
    controlar ese comportamiento.
  • 2:02 - 2:04
    La primera cosa que necesitamos hacer es crear
  • 2:04 - 2:07
    una variable float que llamaremos Move
  • 2:07 - 2:08
    en el método update.
  • 2:10 - 2:12
    Después vamos a establecer la variable Move
  • 2:12 - 2:14
    a que sea igual al input del eje vertical
  • 2:14 - 2:18
    escribiendo Input.GetAxis
  • 2:18 - 2:21
    y en paréntesis nosotros a vamos a parse el string Vertical.
  • 2:22 - 2:24
    Lo que sigue es que queremos pasar el
  • 2:24 - 2:26
    valor de la variable Move al
  • 2:26 - 2:29
    atributo Speed del animator controller.
  • 2:30 - 2:33
    Esto es hecho con la función SetFloat
  • 2:33 - 2:35
    de la clase animator.
  • 2:36 - 2:38
    Nosotros estamos utilizando SetFloat ya que Speed
  • 2:38 - 2:40
    es un parámetro float.
  • 2:40 - 2:42
    Si se le hubiera dado un parámetro Booleano
  • 2:42 - 2:44
    nosotros hubiéramos utilizado SetBool.
  • 2:44 - 2:47
    Si hubiera sido un parámetro trigger nosotros hubieramos
  • 2:47 - 2:49
    utilizado SetTrigger y así.
  • 2:51 - 2:52
    Para cada una de estas funciones hay
  • 2:52 - 2:54
    múltiples maneras en las que pueden ser llamadas.
  • 2:55 - 2:57
    La manera más común es primero pasar
  • 2:57 - 2:59
    el nombre del parámetro que está ajustando
  • 2:59 - 3:01
    como un string.
  • 3:01 - 3:03
    Luego el siguiente elemento es el valor
  • 3:03 - 3:05
    que usted desea que ese parámetro sea.
  • 3:06 - 3:08
    En esta instancia nosotros vamos a llamar el
  • 3:08 - 3:11
    método SetFloat de nuestra variable animator escribiendo
  • 3:11 - 3:13
    anim.SetFloat
  • 3:14 - 3:17
    y luego en paréntesis el string Speed
  • 3:17 - 3:19
    y nuestra variable Move.
  • 3:20 - 3:22
    Devuelta en Unity nosotros podemos correr nuestra escena.
  • 3:22 - 3:24
    Nosotros podemos ver que si presionamos la tecla W
  • 3:24 - 3:28
    o la tecla de arriba, nuestro modelo ahora se mueve.
  • 3:28 - 3:30
    El parámetro Speed y la animación de
  • 3:30 - 3:33
    movimiento reproducida ahora es controlada por el jugador.
  • 3:34 - 3:36
    Pasar un nombre string
  • 3:36 - 3:38
    para el parámetro que deseamos puede ser ineficiente
  • 3:38 - 3:40
    ya que significa que el animator necesita
  • 3:40 - 3:43
    evaluar el string cada vez que es llamado.
  • 3:44 - 3:46
    Una manera más rápida de configurar los valores del parámetro
  • 3:46 - 3:48
    es utilizando hashIDs.
  • 3:48 - 3:50
    Cada string que el animator puede utilizar es
  • 3:50 - 3:52
    dado en un hashID.
  • 3:52 - 3:54
    Este es un valor entero que es único
  • 3:54 - 3:56
    para cada string diferente.
  • 3:56 - 3:58
    Nosotros podemos almacenar este valor y luego
  • 3:58 - 4:01
    configurar los parámetros utilizando este ID más bien.
  • 4:02 - 4:04
    Para hacer esto, primero necesitamos
  • 4:04 - 4:06
    almacenar el valor.
  • 4:06 - 4:09
    Creamps una variable de tipo entero llamada jumpHash
  • 4:09 - 4:11
    para almacenar el hashID.
  • 4:11 - 4:13
    Obtenemos el valor para nuestra variable hash
  • 4:13 - 4:16
    llamando el método estático de la clase animator
  • 4:16 - 4:18
    string to hash.
  • 4:18 - 4:21
    Debido a que este método es estático nosotros podemos accederlo
  • 4:21 - 4:25
    escribiendo Animator.StringToHash.
  • 4:26 - 4:29
    En el paréntesis nosotros pasamos el string
  • 4:29 - 4:32
    que queremos saber su valor hashID:
  • 4:33 - 4:35
    Con el fin de hacer que nuestro modelo salte
  • 4:35 - 4:37
    nosotros necesitaremos configurar el parámetro Jump
  • 4:37 - 4:39
    de tipo trigger en el animator controller.
  • 4:39 - 4:42
    En nuestro caso nosotros queremos hacer que el modelo salte
  • 4:42 - 4:44
    cuando se presione la barra espaciadora.
  • 4:44 - 4:46
    Entonces nosotros comenzáramos escribiendo
  • 4:46 - 4:51
    if Input.GetKeyDown y luego en paréntesis
  • 4:51 - 4:55
    nosotros utilizaremos KeyCode.Space.
  • 4:56 - 4:58
    Dentro de nuestra declaración if nosotros
  • 4:58 - 5:01
    estableceremos el parámetro Jump de tipo trigger utilizando
  • 5:01 - 5:03
    el método anim.SetTrigger.
  • 5:04 - 5:06
    Dentro del paréntesis nosotros vamos a
  • 5:06 - 5:08
    pasar nuestra variable jumpHash.
  • 5:09 - 5:11
    Recuerde que esta variable contiene el
  • 5:11 - 5:14
    hasID de nuestro parámetro Jump.
  • 5:15 - 5:17
    Tenga en cuenta desde que Jump es un trigger
  • 5:17 - 5:19
    nosotros no tenemos que también pasar ese valor.
  • 5:20 - 5:23
    Devuelta en Unity nosotros podemos correr nuestra escena.
  • 5:24 - 5:26
    Tenga en cuenta que mientras nosotros estamos corriendo también
  • 5:26 - 5:28
    podemos presionar la barra espaciadora para saltar.
  • 5:29 - 5:31
    Ahora nosotros hemos utilizado ambos
  • 5:31 - 5:33
    parámetros Speed de tipo float y
  • 5:33 - 5:36
    Jump de tipo trigger para hacer que nuestro modelo
  • 5:36 - 5:37
    sea más dinámico.
  • 5:38 - 5:40
    Ocasionalmente, cuando se está escribiendo la lógica
  • 5:40 - 5:42
    detrás de la animación nosotros queremos
  • 5:42 - 5:45
    encontrar en qué estado el controller está.
  • 5:46 - 5:48
    Digamos por ejemplo que nosotros queremos ser capaces de
  • 5:48 - 5:50
    activar el trigger Jump cuando el modelo
  • 5:50 - 5:52
    está en el estado Run.
  • 5:53 - 5:55
    El animator tiene algunas funciones que podemos llamar
  • 5:55 - 5:57
    para encontrar en qué estado el controller
  • 5:57 - 5:59
    actualmente está.
  • 6:00 - 6:02
    Nosotros podemos hacer esto creando
  • 6:02 - 6:04
    una variable animator state info
  • 6:04 - 6:07
    que llamaremos StateInfo.
  • 6:08 - 6:10
    La clase animator state info
  • 6:10 - 6:12
    almacena el nombre, nombre hash,
  • 6:12 - 6:14
    y varias otras piezas de información
  • 6:14 - 6:16
    acerca del estado.
  • 6:18 - 6:20
    Nosotros estableceremos nuestra variable state info
  • 6:20 - 6:25
    igual a la función anim.GetCurrentAnimatorStateInfo.
  • 6:26 - 6:29
    Dentro del paréntesis nosotros vamos a pasar el indice
  • 6:29 - 6:31
    de la capa que queremos saber más acerca.
  • 6:31 - 6:33
    Dado que se trata de la base layer
  • 6:33 - 6:35
    nosotros vamos a pasar en un 0.
  • 6:36 - 6:38
    Nuevamente nosotros podemos comparar el nombre de los
  • 6:38 - 6:41
    estados de maquina actuales con el string
  • 6:41 - 6:42
    pero ya que es más eficiente comparar
  • 6:42 - 6:45
    hashIDs hagamos esto más bien.
  • 6:46 - 6:48
    Nosotros comenzaremos creando un entero llamado
  • 6:48 - 6:51
    runStateHash y configurándolo a que sea igual a nuestra
  • 6:51 - 6:54
    función Animator.StringToHash .
  • 6:55 - 6:57
    Nosotros vamos a pasar en el paréntesis
  • 6:57 - 7:00
    el string base layer .Run
  • 7:01 - 7:04
    Nosotros tenemos que incluir la base layer.part
  • 7:04 - 7:07
    ya que podemos tener estados con el mismo nombre
  • 7:07 - 7:08
    en diferentes capas.
  • 7:09 - 7:12
    Ahora nosotros podemos modificar nuestra declaración if
  • 7:12 - 7:14
    para también únicamente permitir nuestro modelo saltar
  • 7:14 - 7:17
    si stateInfo.nameHash
  • 7:17 - 7:20
    es igual a nuestra variable runStateHash.
Title:
Animator Scripting - Unity Official Tutorials
Description:

more » « less
Video Language:
English
Duration:
07:23

Spanish subtitles

Revisions