我一直以为我写了这篇文章,当我想找相关知识点的时候 发现我并某有写。
本文章主要写Animtion老版的动画机
给的fbx的时候更换模式Legacy (legacy是Animtion样式 Generic是Animtor样式)
拖拽到场景中的时候自动带Animtion组件 显示如下(play Automatically 勾选为自动播放)
切动画 点击动画FBX 的Animtion入下图 点击加号 添加Clip 可以设置起始时间和结束时间和名称
左下角的红框标选的是开始按钮 点击动画机会播放进行观察 最下面的Fram后的数字 是现在播放暂停的动画帧数 方便填写动画的开始时间可结束时间 以上都是切动画的小技巧 24帧是1秒时间
动画播放 添加事件
方法一:
播放动画
Object_003.GetComponent<Animation>().Play();
播放某一切动画
Object_003.GetComponent<Animation>().Play("001");
然后添加延时Invoke 放入事件
public GameObject CloseDoor;//动画物体
public void PlayAnim() {
CloseDoor.GetComponent<Animation>().Play("001");//播放切动画clip
float time = 100 / 24;
Invoke("Close", time);
}
void Close() {
Debug.Log("当前动画播放到100帧 事件响应 输出本语句");
}
方法二 动画播放添加事件 使用携程延时
public GameObject CloseDoor;//动画物体
public void PlayAnim() {
CloseDoor.GetComponent<Animation>().Play("001");//播放切动画clip
StartCoroutine(Ie_00601());
}
IEnumerator Ie_00601()
{
float time01 = (float)(522 - 400) / 24;
yield return new WaitForSeconds(time01);
Debug.Log("当前动画播放到522 - 400帧 事件响应 输出本语句");
float time02 = (600 - 530) / 24;
yield return new WaitForSeconds(time02);
Debug.Log("当前动画播放到600-530帧 事件响应 输出本语句");
float time = (810 - 600) / 24;
yield return new WaitForSeconds(time);
Debug.Log("当前动画播放到810 - 600帧 事件响应 输出本语句");
}
方法三 AddEvent
public Animation Ani;
void Start () {
AnimationEvent CloseDoor = new AnimationEvent();
CloseDoor.functionName = "CloseDoor";
CloseDoor.time = 100 / 24f;
Ani.GetClip("Take 001").AddEvent(CloseDoor);
Ani.Play();
}
public void CloseDoor() {
Debug.Log("在动画100帧的时候输出此语句 注意本方法必须挂载在动画物体上");
}
Animtion 获取Clip :Ani.GetClip("Clip的名字")
控制Animtion 播放动画速度: Ani["Take 001"].speed = 2;//数值越大播放速度越快