Buscar en Unity

5 consejos para mantener los controladores del animador muy ordenados

Last updated: December 2018

What you will get from this page: Will Armstrong’s five awesome tips for animator controllers. You’ll get tips for building animator controllers for your characters like you would a script: so they’re efficient to reuse, extend, support and debug, all the way through the development cycle.
All of the screenshots are from animation for the character Henry in Firewatch.

Oculta la complejidad en blend trees

Los blend trees sirven para ocultar la complejidad. Un blend tree no tiene un estado; no efectúa la autenticación en el código. Simplemente, combina los diferentes clips en función de los parámetros que definas.

Esto significa que puedes iterar en los blend trees sin tener que preocuparte de arruinar el resto del juego. Puedes ocultar una red compleja de estados y evitar los errores en el camino, debido a que no puedes enlazar el comportamiento con muchas de las animaciones de un blend tree.

unity-tidy-animators-locomotion-blend-tree

Parece complejo, pero este blend tree de locomoción realmente ayudó a mantener las cosas simples.

Cuando piensas en "capas", piensa en: "una clase de script"

Ayuda a pensar en capas como una analogía aproximada para una clase en un script. Es conveniente que todo lo que se encuentra en una capa sirva a la misma función lógica y conductal. Esto se debe a que cada capa controla lo que anula de las otras capas, independientemente de que afecte a ciertos huesos, independientemente de que la capa sea aditiva, y así sucesivamente.

unity-tidy-animators-states

All of the states for Henry’s left hand. Each layer has a purpose and a clear hierarchy. It makes it easy to control and easy to find state.

Patrones de reutilización

Los patrones lógicos reutilizables en máquinas de estados y subestados aceleran el desarrollo, permiten que varias personas preparen contenidos similares, facilitan la depuración y pueden, de hecho, reducir los errores en general.

Unos pocos patrones que son útiles para estructurar tus capas:

  • Hub and spoke, o centro y radios: Este patrón facilita la depuración, debido a que puedes ver claramente cómo desaparecen las transiciones y luego regresan al estado vacío. Cada radio del centro debe restablecer cada estado que toca. Los radios son buenos candidatos para aplicarlos en las máquinas de subestados, utilizando los patrones que se presentan a continuación.

    unity-tidy-animators-hub-and-spoke

    Un patrón de centro y radios que se utiliza para animar el brazo derecho de Henry.

  • El patrón de entrada compartida / salida compartida: Agrupando los estados en un patrón de "intro" - "ejecución / bucle" - "outro", puedes conectar limpiamente cualquier evento de animación o comportamiento de la máquina de estados con los estados "intro" y "outro". De una manera muy similar a la de un blend tree, luego puedes iterar y modificar los estados "ejecución / bucle" internos sin preocuparte de interrumpir tu juego.

    unity-tidy-animators-entry-to-exit

    Entrada a Salida: Todos los estados de la mano derecha de Henry para sostener un libro; hay otros subestados que ocultan los detalles, por debajo.

  • El patrón de sección crítica y solución: para las animaciones interrumpibles, en especial para las animaciones controladas por el jugador, descompón tu clip en 2 partes. Primero, una sección crítica que contenga todos los cambios de estado, efectos, daños, etc. que siempre deben jugarse para completar el juego. Segundo, una animación de solución que se vea bien devolviéndote al estado inactivo y que pueda interrumpirse mediante una nueva entrada.

    unity-tidy-animators-critical-section-and-settle

    Una vez que tus animaciones estén funcionando y tengan la apariencia que deseas, debes enviar retroalimentación acerca del estado de tus animaciones al estado del juego. Se presenta un par de puntos importantes que debes recordar cuando lo hagas.

No escribas un código complejo dentro de los comportamientos de la máquina de estados

State machine behaviors are bits of code that you can attach to any animation state. You use them to tie behavior directly to the state of the animator itself.

Avoid writing complex gameplay code inside of them because it can get difficult to track down where your changes in the state are coming from. If you are using state machine behavior to drive gameplay code, use a messaging system; talk to a manager class, or trigger your code off of parameters at a higher level.

Finally, my favorite state machine behavior: Debug.Break();. It’s the most useful state machine behavior; you can attach anywhere in your animation setup, and you’ll have a breakpoint, similar to that of a visual scripting system.

Don’t be afraid to use C# code where appropriate. Rather than have hundreds or thousands of transitions, or hooking up AnyState transitions all over the place, use Animator.Play or Animator.CrossFade to dynamically cause direct transitions from code. If that still isn’t enough control, you can look into our PlayablesAPI for even more ways to animate using code. Examples can be found at https://docs.unity3d.com/Manual/Playables-Examples.html.

Utiliza los comportamientos de la máquina de estados para asegurar que siempre se active un evento de animación

Los eventos de animación enlazan un momento específico de tu clip de animación con un cambio de estado específico del juego; pueden utilizarse para desactivar detalles como los efectos visuales y de sonido. Sin embargo, si haces una transición desde un clip antes de que se haya activado, nunca se activará. Una manera de resolver esto es agregar un comportamiento de la máquina de estados que asegure que el evento siempre se active cuando se alcanza un punto específico en el tiempo, sin importar qué otra cosa ocurra, o no ocurra, en el juego.

unity-tidy-animators-state-machine

Mas recursos

¡Debemos saberlo! ¿Te gustó este contenido?

Sí. Que sigan llegando Me da igual. Podría ser mejor
Lo tengo

Usamos cookies para brindarte la mejor experiencia en nuestro sitio web. Visita nuestra página de política de cookies si deseas más información.