Directorio de artículos
1. Agregar animación
Seleccione el objeto a animar, en la ventana Animación.
Aviso: Si el objeto seleccionado no tiene un componente Animación/Animador, el componente Animador se agregará automáticamente.
2. Animación
2.1 Interfaz de producción
Vista previa: activa/desactiva el modo de vista previa de la escena.
Grabación: activa/desactiva el modo de grabación de fotogramas clave.
Vaya al comienzo del clip de animación.
Ir al fotograma clave anterior.
Reproducir clip de animación.
Ir al siguiente fotograma clave.
Vaya al final del clip de animación.
cuadro actual.
Nombre de la animación actual, desplegable para crear una nueva animación.
Muestras, fotogramas por segundo/minuto.
Añade fotogramas clave.
Añadir evento.
Línea de tiempo.
Controlar la eliminación de atributos o aumentar o disminuir claves.
instrucciones.
curva.
2.2 La animación producida.
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
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
3.2 Explicación de algunos parámetros
- Solo y Silenciar
Cuando una animación tiene múltiples animaciones posteriores:
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 - ** 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
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);
}
}
}
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;
}