Unity5.3.6 Animtion动画播放技巧

版权声明:记录上工作中的一些问题 https://blog.csdn.net/m0_37583098/article/details/84847755

我一直以为我写了这篇文章,当我想找相关知识点的时候 发现我并某有写。

本文章主要写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;//数值越大播放速度越快 

猜你喜欢

转载自blog.csdn.net/m0_37583098/article/details/84847755