El uso de Unity Animation y Animator (súper detallado)

1. Agregar animación

Seleccione el objeto a animar, en la ventana Animación.
Insertar descripción de la imagen aquíAviso: Si el objeto seleccionado no tiene un componente Animación/Animador, el componente Animador se agregará automáticamente.
Insertar descripción de la imagen aquí

2. Animación

2.1 Interfaz de producción

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquíVista previa: activa/desactiva el modo de vista previa de la escena.

Insertar descripción de la imagen aquíGrabación: activa/desactiva el modo de grabación de fotogramas clave.

Insertar descripción de la imagen aquíVaya al comienzo del clip de animación.

Insertar descripción de la imagen aquíIr al fotograma clave anterior.

Insertar descripción de la imagen aquíReproducir clip de animación.

Insertar descripción de la imagen aquíIr al siguiente fotograma clave.

Insertar descripción de la imagen aquíVaya al final del clip de animación.

Insertar descripción de la imagen aquícuadro actual.

Insertar descripción de la imagen aquíNombre de la animación actual, desplegable para crear una nueva animación.

Insertar descripción de la imagen aquíMuestras, fotogramas por segundo/minuto.

Insertar descripción de la imagen aquíAñade fotogramas clave.

Insertar descripción de la imagen aquíAñadir evento.

Insertar descripción de la imagen aquíLínea de tiempo.

Insertar descripción de la imagen aquíControlar la eliminación de atributos o aumentar o disminuir claves.

Insertar descripción de la imagen aquíinstrucciones.

Insertar descripción de la imagen aquícurva.

2.2 La animación producida.

Insertar descripción de la imagen aquí

Longitud Longitud (duración de la animación)
Tiempo de bucle ciclo
Postura de bucle Acción de bucle (suaviza la conexión de la cabeza y la cola al realizar el bucle)
Compensación de ciclo Suavidad

2.3 Agregar y usar eventos

Insertar descripción de la imagen aquí

public class AnimEvents : MonoBehaviour
{
    
    

    private void Start()
    {
    
    
        // 创建一个事件
        AnimationEvent evt = new AnimationEvent();
        // 绑定触发事件后要执行的方法名
        evt.functionName = "PrintEvent";
        // 执行方法后要传入的参数
        evt.intParameter = 12345;
        // 设置事件关键帧的位置,当事件过了1.3秒后执行
        evt.time = 0.5f;
        // 设置目标动画剪辑
        AnimationClip clip = this.GetComponent<Animator>().runtimeAnimatorController.animationClips[0];
        // 绑定事件
        clip.AddEvent(evt);
    }

    private void TestAniEvent(string param)
    {
    
    
        Debug.Log("事件触发,参数是:" + param);
    }

    private void PrintEvent(int param)
    {
    
    
        Debug.Log(param);
    }
}

==Nota:==El script y el objeto donde se encuentra el animador están en el mismo objeto

3. animador

3.1 Interfaz de producción

Insertar descripción de la imagen aquí

3.2 Explicación de algunos parámetros

  1. Solo y Silenciar
    Cuando una animación tiene múltiples animaciones posteriores:
    Insertar descripción de la imagen aquí
    Después de reproducir la animación, se le da prioridad a la transición de estado frontal (o superior) en la lista de acciones
    Solo: Cuando una determinada transición se establece en Solo, se le da prioridad a la marca. Transferencia de animación de Solo
    Silenciar: la transferencia del estado seleccionado está deshabilitada
  2. ** Tiene hora de salida **
    Si hay una hora de salida. Comprensión simple: encender significa esperar a que termine la animación actual antes de pasar a la siguiente animación; apagar significa interrumpir la animación actual inmediatamente y reproducir la siguiente animación.

3.3 Parámetros de animación

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Control de código:

public class AnimControl : MonoBehaviour
{
    
    
    private Animator anim;
    private void Start()
    {
    
    
        anim = this.GetComponent<Animator>();
    }

    private void Update()
    {
    
    
        if (Input.GetKeyDown(KeyCode.R))
        {
    
    
            anim.SetBool("BoolParams", true);
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
    
    
            anim.SetBool("BoolParams", false);
        }
    }
}

Insertar descripción de la imagen aquí

4. Clases, propiedades y API relacionadas en Animator

4.1 Clase

AnimationClip: clip de animación, animación

Propiedades/Métodos significado
longitud Duración de la animación en segundos. (solo lectura)
cuadros por segundo La velocidad de fotogramas a la que se muestrean los fotogramas clave. (solo lectura)
longitud / (1 / velocidad de fotogramas) Velocidad de fotogramas total
Añadir evento Agregar un evento de animación al clip

AnimatorStateInfo: información de estado de la máquina de estado de animación

Propiedades/Métodos significado
ruta completaHash El hash de ruta completo del estado.
longitud La duración actual del estado.
tiempo normalizado La parte entera es el número de veces que se ha realizado un ciclo del estado. La parte decimal es el porcentaje de progreso del bucle actual (0-1)
velocidad La velocidad de reproducción de esta animación. 1 significa velocidad de reproducción normal

4.2 Propiedades

Atributos significado
velocidad La velocidad de reproducción del animador. 1 es la velocidad de reproducción normal
tiempo de ejecuciónAnimatorController.animationClips Devolver todas las animacionesAnimationClip[]

4.3 API

nombre del método significado
ObtenerBool Devuelve el valor del argumento booleano dado.
Obtener flotar Devuelve el valor del argumento flotante dado.
Obtener entero Devuelve el valor del argumento entero dado
conjuntobool Establece el valor del parámetro booleano dado.
Establecer flotador Envíe valores de punto flotante a animadores para afectar las transiciones
Establecer número entero Establece el valor del argumento entero dado.
ObtenerCurrentAnimatorClipInfo Devuelve una matriz de todos los AnimatorClipInfo en el estado actual de la capa dada
ObtenerCurrentAnimatorClipInfoCount Devuelve el número de AnimatorClipInfo en el estado actual.
Obtener información actual del estado de Animator Devuelve AnimatorStateInfo que contiene información sobre el estado actual.
ObtenerNextAnimatorClipInfo Devuelve una matriz de todos los AnimatorClipInfos en el siguiente estado de la capa dada
GetNextAnimatorClipInfoCount Devuelve el número de AnimatorClipInfo en el siguiente estado.
ObtenerNextAnimatorStateInfo Devuelve AnimatorStateInfo que contiene información sobre el siguiente estado.
Jugar jugar un estado

4.4 Varios métodos clave

Animador.Jugar

void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
Parámetros Descripción Descripción
nombre del Estado El nombre del estado de la animación que se reproducirá.
capa La capa en la que se encuentra el estado de la animación.
tiempo normalizado El tiempo normalizado (0-1, valor de escala de tiempo) del estado de la animación que se reproducirá.

5. Reproducción de animación y control de pausa.

1. animotor

// 播放
animator.Play("ani_name");
// 暂停
animator.speed = 0;
// 继续播放
animator.speed = 1;
//  重置到起始帧
animator.Play("ani_name", 0, 0f);

2. Animación

// 播放
animition.Play("ani_name");
// 暂停
animition["ani_name"].speed = 0;
// 继续播放
animition["ani_name"].speed = 1;
// 重置到起始帧
public void ResetAni(Animation ani, string name)
{
    
    
     AnimationState state = ani[name];
     ani.Play(name);
     state.time = 0;
     ani.Sample();
     state.enabled = false;
 }

Supongo que te gusta

Origin blog.csdn.net/weixin_45136016/article/details/132756008
Recomendado
Clasificación