Tabla de contenidos

Introducción

En esta lección vamos a explorar cómo utilizar animaciones en una escena. Este tutorial es un paso bueno para los que han leído el tutorial sobre cómo crear animaciones. Que se puede ver aquí. Sin embargo, no se requiere ningún conocimiento previo de animación. Los guiones de esta lección se pueden descargar aquí
No se pierda! extremos de la oferta en

  • Accede a los más de 200 cursos
  • Nuevos cursos añadió mensual
  • Cancelar en cualquier momento
  • Los certificados de terminación

    ACCESO ahora

    Configuración del proyecto

    Abre la Unidad y crear un nuevo proyecto. Crear una carpeta llamada “Escenas” y guardar la escena actual en esa carpeta.


    A Activos -> Importar paquete -.> Y seleccione el paquete “caracteres”

    Deseleccionar el primer carácter persona, ya que no va a trabajar con eso.

    Ahora haga un avión para el personaje a estar de pie. A continuación, hacer algunos cubos y rampas de nuestro carácter para correr y caminar sobre

    .

    Esto es opcional pero, adelante y arrastre en la “ThirdPersonController” en la escena. El juego y mira cómo se mueve el personaje. Vamos a construir, a partir de cero, un personaje que se mueve similares a este.


    Una vez que tenga una idea de cómo se mueve el personaje, ThirdPersonController ya no es necesario y puede eliminarlo.


    El animador

    Navegar en los archivos del proyecto a Activos estándar -> Caracteres -.> Modelos y arrastre en el modelo “Ethan”


    A continuación, crear una carpeta llamada “animación”.


    clic derecho e ir a Crear -.> “Controlador animador” < / p>

    El nombre de “Ethan”. Arrastrar nuestro nuevo controlador de animador en el modelo de Ethan.

    El controlador animador le permite asignar múltiples animaciones a un modelo. Para los personajes humanoides, como la nuestra, se requiere algo que se llama un “avatar”. Haga clic en el círculo junto al campo de Avatar y encontrar el “EthanAvatar”. Vamos a echar un vistazo al Avatar.


    Haga clic en “Configurar Avatar”.


    Como se puede ver, el Avatar es sólo una manera para que la Unidad para encontrar y configurar los huesos en el modelo.


    Pulse finalizar y volver al modelo de Ethan. Echemos un vistazo a algunos de los ajustes en el componente animador.


    El “Aplicar Raíz de movimiento” booleano determina si la unidad va a utilizar el movimiento en la animación o un guión. Por ejemplo, decir que tengo un script que hace que mi personaje se mueven hacia delante. Tengo una animación adjunta del carácter correr en su lugar. Ya que el guión se está moviendo el personaje no la animación a continuación, me gustaría que la raíz del movimiento establecido en false. Sin embargo, como veremos en breve, queremos hacer posible la raíz del movimiento en este caso. Con “Modo de actualización” se puede determinar cómo desea que sus animaciones para jugar. Tal como con la física, con una velocidad fija, o simplemente normal. El sacrificio de modo le permite determinar si desea mantener animación, incluso fuera de la pantalla. Con el modelo de Ethan seleccionado, vaya a la pestaña “animador” .

    Aquí es donde añadimos en las animaciones que afectarán nuestro modelo.

    Unidos

    En la pestaña Proyecto establece el filtro para las animaciones.

    Busque “HumanoidIdle”, “HumanoidWalk” y “HumanoidRun.”

    arrastrar estos tres en la pestaña animador. Ahora hay tres nuevas cajas en nuestra cuenta, esas son las animaciones conocidas como máquinas de estado. También, observe como una de las cajas es de color naranja.


    El naranja es el primero que ha seleccionado en la pestaña Proyecto. Eso se conoce un “estado predeterminado”. Queremos que el “HumanoidIdle” que es el estado por defecto. Para ello haga clic derecho en “HumanoidIdle” y seleccionar “Establecer como estado de capa por defecto”.

    Vea cómo el estado por defecto tiene una flecha naranja procedente de la caja que dice de entrada. Esto significa que tan pronto como se inicia el juego se irán al estado por defecto. Dale al play y ver qué pasa. Nuestro modelo está en punto muerto!


    Eso es bastante limpio, pero lo hace para un juego muy aburrido. Queremos que nuestro personaje sea capaz de correr y caminar alrededor de la escena. Para ello, haga clic derecho en el estado por defecto y seleccionar “Hacer la transición”. A continuación, haga clic en el estado “HumanoidWalk”.


    Ahora juego de la prensa y mira lo que pasa. Idles Ethan por un poco, entonces empieza a caminar.

    Ahora hacer lo mismo para el estado de ejecución. A continuación, pulse el juego y ver qué pasa. Nuestros jugador Idles, paseos, luego corre.


    Parámetros y transiciones

    Tenemos nuestro modelo de animación pero carece de control. Que funciona en vacío y se ejecuta sin hacer nada. La forma añadimos el control es a través de parámetros. Los parámetros son variables que están definidas dentro del animador que los scripts pueden acceder y asignar valores a, así es como un guión puede interactuar con el animador. Hay tres tipos: Int. (O entero), flotador, booleanos, y el gatillo

    Todos ellos son bastante explica por sí mismo a excepción de Trigger. Un disparador es como un valor lógico, pero tan pronto como se establece en true inmediatamente se remonta a falso. Nos daremos cuenta de que pronto utilidad. Por ahora hacer un parámetro de flotador y llamarlo velocidad.

    A continuación, haga clic en el ralentí a caminar de transición y establecer la condición de que si la velocidad es superior a 0,5. Esto significa que sólo se transición si la velocidad es mayor que 0,5.


    A continuación, haga clic en el pie de ejecutar la transición y establecer la condición de que si la velocidad es superior a 0,9. Ahora jugar, aumentar o disminuir el parámetro de velocidad para ver lo que sucede.


    Está bien no está mal pero podría utilizar algunos ajustes. En primer lugar voy a ir a cada transición y desmarque “tiene tiempo de salida,”


    con esta habilitada la transición pasaría a través de toda la animación antes de la transición. Lo que significa que habrá una demora si el jugador pulsa la tecla RUN. En segundo lugar, hacer otros dos transiciones (incapacitante Ha tiempo de salida, por supuesto), que va desde plazo para caminar, y luego caminar a ralentí.


    Establecer la condición de ejecución para caminar a la velocidad es inferior a 0,9 y la condición de la caminata a ralentí a la velocidad es inferior a 0,5. Bueno, ahora que tenemos el aspecto de que le permiten hacerlo en la configuración de transición. Aviso cómo se puede obtener una vista previa de la transición?

    La sección azul es dónde y por cuánto tiempo será la transición. Se puede cambiar en qué punto un determinado clip de transición.


    Esto se puede utilizar para hacer sus transiciones aspecto más realista. Abre Ajustes en una transición.


    Tiempo de salida es cuánto tiempo antes de la transición comienza a salir. Con Duración fija activada podemos usar el marcador azul para la transición. Duración de la transición es bastante explica por sí mismo, la duración de la transición! Interrupción de la fuente es bastante interesante. Si la condición de transición se convierte en falsa, ya que está en transición, se ha interrumpido. Cuando interrupción de la fuente se establece en Ninguno puede ser interrumpido ser el Todo Estado (que vamos a ver más adelante). Cuando se establece en Estado actual que pasará a través de la transición a continuación, ser interrumpido. Siguiente Estado ejecuta la siguiente transición luego puede ser interrumpido. Estado actual Luego Siguiente Estado ejecuta la transición actual, entonces la siguiente transición antes de ser interrumpido. Siguiente Estado Luego Estado actual es básicamente la inversa, si se produce una interrupción que se ejecuta la siguiente transición entonces la transición actual. No importa lo que se propuso esta configuración para debido a que no se realiza ningún usarlo!

    Fusión árboles 1D

    Este sistema de locomoción funciona pero no es muy modular. No podemos añadir girar a la izquierda oa la derecha con mucha facilidad. Una manera mejor y más limpia de hacer esto sería a través de los árboles de fusión. Los árboles son una forma de mezcla para mezclar múltiples animaciones juntos sin problemas en diversos grados. Para hacer una mezcla del árbol, haga clic derecho en el animador y seleccione Crear Estado -> De nuevo la mezcla del árbol. El nombre de “Locomotion” o “onground”.

    doble clic sobre él, añadir tres campos de movimiento y poner los tres animaciones en ralentí, caminar, correr.


    Los umbrales ya están configurados para nosotros, pero si quieres personalizarlos desactive “Automatizar los campos”. Básicamente, es todo lo que ya hemos hecho, pero en un formato más agradable. Cuando el parámetro de velocidad recibe más de 0,5 el personaje camina, cuando la velocidad es igual a 1 las carreras de caracteres. Volver a la capa de base y eliminar los otros tres estados.


    A continuación, hacer una transición (a menos que lo hace por usted) de la entrada a nuestro Locomotion mezcla del árbol.


    Ahora jugar y ver qué pasa. Se ve bien, si nota que se mezcla la animación de caminar y correr juntos si la velocidad está entre 0,5 y 1.


    Hacer nuestro carácter Encienda

    Así que nuestro personaje puede correr, caminar, y ociosa, pero no es muy emocionante. A menos que tenga un juego donde el personaje sólo se ejecuta hacia adelante (que, quién lo hace?) No es ni remotamente útil. Necesitamos que nuestro personaje sea capaz de girar a la izquierda y la derecha (obviamente!). Para hacer esto de nuevo ir a nuestra mezcla Locomotion árbol y establecer el tipo de “2D de forma libre cartesiano.” Una mezcla del árbol tiene cinco tipos diferentes de modos de fusión:. 1D, 2D simple direccionales, 2D de forma libre direccionales, 2D de forma libre cartesianas, y direccionales


    Ya hemos mirado 1D. 1D utiliza sólo un parámetro para comprobar con, mientras que cualquiera de los otros tipos requieren dos. 2D simple direccional es si necesita algo un poco más complicado que 1D. Un ejemplo sería si sólo necesitas caminar hacia adelante, caminar a la derecha, o caminar a la izquierda movimientos. 2D de forma libre direccional es un poco más complicado. Sería capaz de manejar, caminar hacia adelante, marcha adelante, Paseo derecho, etc. Ejecutar derecho 2D de forma libre cartesiana añade otro nivel de complejidad a la mezcla. Permite correr, caminar, y girando. Antes de hacer nada, sin embargo tenemos que crear un nuevo parámetro de flotador llamado “TurningSpeed” y ponerlo en la otra ranura parámetro.


    Ahora bien, estos pasos pueden no tener mucho sentido, pero palo conmigo y espero que pueda explicar lo suficientemente bien. Añadir doce más ranuras de movimiento. Busque y asignar a estas animaciones en este orden:

    “StandQuarterTurnRight”, “StandHalfTurnRight”, “HumanoidWalkRight”, “HumanoidWalkRightSharp”, “HumanoidRunRight”, “HumanoidRunRightSharp”, “StandQuarterTurnLeft”, “StandHalfTurnLeft”, “HumanoidWalkLeft”, “HumanoidWalkLeftSharp”, “HumanoidLeftRight”, y “HumanoidRunLeftSharp .”


    A continuación, asignar los valores a tener el siguiente aspecto:


    Su gráfico debería tener este aspecto:


    Está bien, es de esperar que todavía están con nosotros después de que la enorme lista de tareas inexplicables. Si usted hizo todo lo que ahora puede jugar y cambiar los valores de velocidad y TurnSpeed ​​a ver qué pasa.


    Con buena pinta! Pero, ¿por qué lo hace? Para responder a esta es necesario entender cómo funciona 2D de forma libre cartesiano. Piense en ello como un gráfico. El parámetro de velocidad es el valor x y TurnSpeed ​​es el valor y. Si los dos valores son iguales a 0, entonces el jugador se queda quieto. Si es -1 TurnSpeed ​​el carácter gira a la izquierda. Si es 1 el jugador gira a la derecha, a la vez que la mezcla entre “StandQuarterTurnRight” o “StandHalfTurnRight.” Si la velocidad es igual a 1, el jugador se queda, el 0,5 y el personaje camina. Si TurnSpeed ​​es 1 y la velocidad es 1, entonces el jugador corre a la derecha. Si ambos iguales 0.5 el jugador camina derecha. Si usted entiende que entonces debería entender por qué establecemos los valores a ser lo que son. Vistazo a este gráfico para la visualización extra:


    Con suerte, esto se ha aclarado la mayoría de las preguntas sobre 2D de forma libre cartesiano. Si no es así, no se preocupe! Sólo pensar en ello, que va a venir a usted.

    La máquina sub-estado “de salto”

    Con el fin de hacer que nuestro personaje salte necesitamos algunas cosas. Un salto encima de actitud, una postura caída, un aterrizó pose, una manera de comprobar si el jugador pulsa la tecla de salto, y una manera de comprobar si nos tiramos al suelo. Voy a hacer los dos últimos, primeros. Crear un nuevo disparador llamado “salto”.


    Y a continuación, crear un valor lógico llamado “tierra”. Está bien lo que se hace ahora podemos seguir adelante. Búsqueda filtro para las siguientes animaciones “HumanoidCrouchIdle” (esto es nuestra postura aterrizado), “HumanoidFall”, y “HumanoidJumpUp”.

    Antes de arrastramos aquellos en los que tenemos que cambiar algo. Si se está revisando una de las animaciones se dará cuenta de una contracción no deseada. Para solucionar este problema Haga clic en Editar

    a continuación, establecer el movimiento para ser sólo un marco de largo.


    Sin embargo, todavía no los podemos arrastrar en todavía! Primero tenemos que crear algo que se llama una máquina sub-estatal. Un sub-estatal de la máquina es un montón de movimientos juntos que actúan como uno solo. Esto es algo bueno utilizar para acciones de salto desde una acción de salto no es realmente sólo una acción, pero un montón de ellos juntos. Haz clic derecho en el animador y pulse el botón “Crear Sub-Estado de la máquina”.


    Nombre saltar. Ahora arrastra todas nuestras poses saltar a la nueva sub-estatal de la máquina.


    Ahora podemos empezar a construir nuestra acción de salto. Hacer una transición de cualquier estado de la pose jumpup. El Todo Estado es una herramienta muy útil. Se hará la transición en un movimiento, si la condición es verdadera, independientemente del lugar que el movimiento es. Establecer la condición para ser nuestro disparador de Salto. A continuación, hacer una transición de jumpup a caer. Hacer una caída de transición Crouch pero recuerda que sólo queremos que la transición si se golpea el suelo. Establecer la condición de que si a tierra es igual a verdadera y desmarque Tiene tiempo de salida. ¿Dónde hacemos la transición a después de esto? De cuclillas en el estado de la salida. Cuando algo transición al estado de la salida en un Sub-Máquina de estado pasará de nuevo al estado de entrada en la capa base.


    De acuerdo, tenemos nuestra configuración de la acción de salto! Aunque todavía tenemos que añadir la física, el juego y ajustar la configuración para obtener el aspecto que está buscando.

    Scripting Nuestro animador

    Ahora llegamos a la última parte y posiblemente más importante de esta lección, secuencias de comandos. Ya hemos visto cómo casi todo en el animador está controlado por parámetros. Por lo que nuestra secuencia de comandos debe controlar esos parámetros. Antes de empezar necesitamos un colisionador de cápsula y un cuerpo rígido en nuestro carácter. Ajuste el colisionador cápsula para rodear nuestro carácter más o menos.

    A continuación, crear un nuevo script llamado “PlayerController”. La forma en que controlamos parámetros a través de la escritura es cada vez primera el acceso al animador:
    privada animador thisAnim; Start () {thisAnim = getComponent ();} 12345privateAnimator thisAnim; Start () {thisAnim = getComponent ();}

    algo luego escribir como el comando siguiente:
    thisAnim.SetTrigger ( «Jump»); 1thisAnim.SetTrigger ( «Jump»);

    Vamos a pensar acerca de lo que tenemos que hacer. En primer lugar, necesitamos una entrada de avance y retroceso:
    vacío Update () {var v = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «velocidad», v);} 1234voidUpdate () {varv = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «Velocidad «, v);}

    Use la entrada de la unidad de eje vertical, que por defecto es la flechas arriba y abajo, a continuación, poner en una variable y asignar dicha variable al parámetro‘velocidad’. Los ajustes de entrada se pueden configurar aquí:


    Lo siguiente que necesitamos una entrada de torneado:
    void Update () {var h = Input.GetAxis ( «horizontal»); var v = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «velocidad», v); thisAnim.SetFloat ( «TurningSpeed», h);} 123456voidUpdate () {varh = Input.GetAxis ( «horizontal»); varv = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «Speed», v); thisAnim .SetFloat ( «TurningSpeed», h);}

    utilizamos el eje horizontal, que por defecto es las flechas izquierda y derecha, al igual que se utilizó el eje vertical sólo que esta vez de asignarlo a TurningSpeed. Jugar y ver qué pasa.


    Está bien nuestro carácter lo hace una planta cara. Para solucionar esto, restringir nuestra rotación en la X, Y, y el eje Z.


    Ahora jugar y ver qué pasa.


    Vaya, guau. ¡Se ve muy bien! Ahora sólo tenemos que añadir la entrada de salto. Con el fin de saltar necesitamos un cuerpo rígido para actuar vigor en el momento, el parámetro de disparo de salto, comprobar para ver si nuestras tierras carácter, y ajuste “a tierra” para ser verdad si el jugador lo hace la tierra. En primer lugar, se obtiene el salto cuerpo rígido y el gatillo con el botón de entrada “Jump”:
    Animador thisAnim privado; cuerpo rígido rígido privado; flotador pública JumpForce = 500; vacío Inicio () {thisAnim = getComponent (); rígida = getComponent (); } Void Update () {var h = Input.GetAxis ( «horizontal»); var v = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «velocidad», v); thisAnim.SetFloat ( «TurningSpeed», h); si (Input.GetButtonDown ( «Jump»)) {rigid.AddForce (Vector3.up * JumpForce); thisAnim.SetTrigger ( «saltar»); }} 12345678910111213141516171819privateAnimator thisAnim; privateRigidbody rígido; publicfloatJumpForce = 500; voidStart () {thisAnim = getComponent (); rígida = getComponent ();} voidUpdate () {varh = Input.GetAxis ( «horizontal»); varv = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «Speed», v); thisAnim.SetFloat ( «TurningSpeed», h), si (Input.GetButtonDown ( «saltar»)) {rigid.AddForce (Vector3 .up * JumpForce); thisAnim.SetTrigger ( «Jump»);}}

    “Jump” por defecto se establece en la barra espaciadora en el administrador de entrada. Luego raycast hacia abajo para ver si hemos tocado el suelo mientras se cambia el valor de la “tierra”:
    si (Physics.Raycast (transform.position + (* Vector3.up 0.1f), Vector3.down, groundDistance, whatIsGround)) {thisAnim.SetBool ( «tierra», true); thisAnim.applyRootMotion = true;} else {thisAnim.SetBool ( «tierra», false);} 123456if (Physics.Raycast (transform.position + (Vector3.up * 0.1f), Vector3.down, groundDistance, whatIsGround)) {thisAnim .SetBool ( «tierra», true); thisAnim.applyRootMotion = true;} else {thisAnim.SetBool ( «tierra», false);}

    Esta parte necesita un flotador, por lo bajo cheque por tierra, y una capa de máscara, para definir lo que suelo es. Una máscara de capa es una forma de agrupar objetos, algo así como las etiquetas. Declarar los que están aquí:
    thisAnim animador privado; flotación pública groundDistance = 0.3f;; cuerpo rígido rígido privada flotador JumpForce pública = 500; LayerMask pública whatIsGround; 12345privateAnimator thisAnim; privateRigidbody rígida; publicfloatgroundDistance = 0.3f; publicfloatJumpForce = 500; publicLayerMask whatIsGround;

    Esta es la completa script:
    utilizando System.Collections; usando System.Collections.Generic; usando UnityEngine; PlayerController clase pública: {MonoBehaviour privada animador thisAnim; privada cuerpo rígido rígido; flotador groundDistance pública = 0.3f; flotador JumpForce pública = 500; LayerMask whatIsGround pública; // Usar esto para la inicialización de inicio void () {thisAnim = getComponent (); rígida = getComponent (); } // actualización se llama una vez por trama de actualización void () {var h = Input.GetAxis ( «horizontal»); var v = Input.GetAxis ( «vertical»); thisAnim.SetFloat ( «velocidad», v); thisAnim.SetFloat ( «TurningSpeed», h); si (Input.GetButtonDown ( «Jump»)) {rigid.AddForce (Vector3.up * JumpForce); thisAnim.SetTrigger ( «saltar»); } If (Physics.Raycast (transform.position + (* Vector3.up 0.1f), Vector3.down, groundDistance, whatIsGround)) {thisAnim.SetBool ( «tierra», true); thisAnim.applyRootMotion = true; } Else {thisAnim.SetBool ( «tierra», false); }}} 1234567891011121314151617181920212223242526272829303132333435363738using System.Collections; usando System.Collections.Generic; usando UnityEngine; publicclassPlayerController: MonoBehaviour {privateAnimator thisAnim; privateRigidbody rígido; publicfloatgroundDistance = 0.3f; publicfloatJumpForce = 500; publicLayerMask whatIsGround; // Usar esto para initializationvoidStart () {thisAnim = getComponent (); rígida = getComponent ();} // actualización se llama una vez por framevoidUpdate () {varh = Input.GetAxis ( «horizontal»); varv = Input.GetAxis ( «vertical») ; thisAnim.SetFloat ( «velocidad», v); thisAnim.SetFloat ( «TurningSpeed», h), si (Input.GetButtonDown ( «Jump»)) {rigid.AddForce (Vector3.up * JumpForce); thisAnim.SetTrigger ( «Jump»);} if (Physics.Raycast (transform.position + (Vector3.up * 0.1f), Vector3.down, groundDistance, whatIsGround)) {thisAnim.SetBool ( «tierra», true); thisAnim.applyRootMotion = true } else {thisAnim.SetBool ( «tierra», false);}}}

    Asegúrese de que WhatIsGround se establece por defecto. Jugar y ver qué pasa.

    Sí! Parece increíble!

    Conclusión

    Wow! Hemos cubierto mucho! Espero que este tutorial ha sido útil y que se obtiene una comprensión de la complejidad de la unidad es animador.

    Seguir haciendo grandes juegos!

    Mensajes relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *