帧动画关键帧处加入触发函数

来源:互联网 发布:单片机控制继电器 编辑:程序博客网 时间:2024/06/05 00:11

 在创建Unity的游戏动画的时候,我们还可以通过添加动画事件的方式来实现,在动画的过程中调用脚本的代码来进行一些操作。

    动画剪辑中可以添加动画事件,使你在时间轴特定的帧调用脚本中的函数。动画事件调用函数时,可以用一个参数。参数可以是float,string,应用对象,或者动画事件对象。函数被调用时,动画事件对象可以将float,string,integer和引用对象等,这些成员变量全部传递给函数。

    下面我们来看一下怎么实现动画事件,实例的场景是一个简单的爆炸动画效果。

    首先我们先创建一个精灵,给精灵添加动画,如图所示:

    创建脚本如下所示:

复制代码
using UnityEngine;using System.Collections;public class Destroyer : MonoBehaviour{    public bool destroyOnAwake;            // 是否在激活的时候销毁对象    public float awakeDestroyDelay;        // 销毁对象的延时时间    public bool findChild = false;        // 是否查找子对象并且销毁掉    public string namedChild;            //子对象名字    void Awake ()    {        // 是否在激活的时候销毁子对象        if(destroyOnAwake)        {            // 有子对象            if(findChild)            {                // 找到自对象,再销毁,transform表示是当前的物体的子对象的集合                Destroy (transform.Find(namedChild).gameObject);            }            else            {                // 延时销毁当前的物体                Destroy(gameObject, awakeDestroyDelay);            }        }    }    // 销毁子对象函数,可以被动画事件调用    void DestroyChildGameObject ()    {        if(transform.Find(namedChild).gameObject != null)            Destroy (transform.Find(namedChild).gameObject);    }    // 设置子对象不可用,可以被动画事件调用    void DisableChildGameObject ()    {        if(transform.Find(namedChild).gameObject.activeSelf == true)            transform.Find(namedChild).gameObject.SetActive(false);    }    // 销毁游戏对象函数,可以被动画事件调用    void DestroyGameObject ()    {        Destroy (gameObject);    }}
复制代码

    在脚本上面定义了3个函数是可以作为动画事件来调用的,下面看看怎么在动画剪接中添加动画事件。

    把鼠标移到时间轴上,右键就可以看到弹出的“Add Animation Event”的按钮,如图所示:

    点击“Add Animation Event”的按钮可以进入添加动画事件的弹出窗口,该窗口会自动把脚本适用于动画事件的函数都给带出来,如图所示:

    添加之后,动画执行到这个时间点上就会执行脚本的动画事件。添加效果的面板如下所示:

0 0
原创粉丝点击