You can increase the usefulness of Animation clips by using using Animation Events, which allow you to call functions in the object’s script at specified points in the timeline.
La función llamada por un evento de animación también tiene la opción de tomar un parámetro. El parámetro puede ser una referencia float
, string
, int
uobject
, o un objeto AnimationEvent. El objeto AnimationEvent tiene variables miembro que permiten que una referencia de float, string, int y object pasen a la función a la vez, junto con otra información sobre el Evento que desencadenó la llamada a la función.
// Esta función C# se puede llamar por un Animation Event
public void PrintFloat (float theValue) {
Debug.Log ("PrintFloat is called with a value of " + theValue);
}
Para agregar un evento de animación a un clip en la posición actual del cursor de reproducción, haga clic en el botón Event. Para agregar un evento de animación a cualquier punto de la animación. Haga doble clic en la línea Event en el punto donde desea que se desencadene el evento. Una vez agregado, puede arrastrar el mouse para reposicionar el evento. Para eliminar un evento, selecciónelo y presione la tecla Delete, o haga clic derecho sobre él y seleccione Delete Event.
Cuando agrega un Evento, la Ventana del Inspector muestra varios campos. Estos campos le permiten especificar el nombre de la función que desea llamar y el valor del parámetro que desea pasarle.
Los eventos agregados a un clip se muestran como marcadores en la línea del evento. Mantenga el mouse sobre un marcador para mostrar una información sobre herramientas con el nombre de la función y el valor del parámetro.
Puede seleccionar y manipular eventos múltiples en el timeline (línea de tiempo).
Para seleccionar varios eventos en la línea de tiempo, mantenga presionada la tecla Shift y seleccione los marcadores de eventos uno por uno para agregarlos a su selección. También puede arrastrar un cuadro de selección a través de ellos; haga clic y arrastre dentro del área del marcador de eventos, así:
Este ejemplo muestra cómo agregar eventos de animación a un GameObject simple. Cuando se siguen todos los pasos, el cubo se anima hacia delante y hacia atrás a lo largo del eje x durante el modo de reproducción, y el mensaje de evento se muestra en la consola cada 1 segundo en el tiempo de 0,8 segundos.
El ejemplo requiere un pequeño script con la función PrintEvent()
. Esta función imprime un mensaje de depuración que incluye un string (“called at:”) y la hora:
// Esta función C# se puede llamar por un Animation Event
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public void PrintEvent(string s) {
Debug.Log("PrintEvent: " + s + " called at: " + Time.time);
}
}
Cree un archivo de script con este código ejemplo y colóquelo en su carpeta Project (haga clic derecho dentro de la ventana Proyect en Unity y seleccione Create > C# Script, luego copie y pegue el ejemplo de código anterior en el archivo y guárdelo).
En Unity, cree un Cube GameObject (menú: GameObject > 3D Object > Cube). Para agregarle su nuevo archivo script, arrástrelo y suéltelo de la ventana del Proyecto en la ventana del Inspector.
Seleccione el cubo y luego abra la ventana de animación (menú: Window__> Animation). Establezca una curva Position__ para la coordenada x.
A continuación, configure la animación para que la coordenada x aumente a alrededor de 0.4 y luego regrese a cero durante 1 segundo, luego cree un evento de animación a aproximadamente 0.8 segundos. Presione Play para ejecutar la animación.