Unity动画中加入控制曲线

发表于2018-05-31
评论0 3.2k浏览
在动画状态机中某个状态时,播放某个动作,加入一个曲线,根据动画播放的时间来取曲线对应的值,这里以应用场景比如一个刀光的拖尾特效为例给大家介绍控制曲线。

效果图

1、添加曲线

在Animator面板中增加一个参数MyCv(这个就是用曲线控制的参数)
双击某个状态,在Curves中添加一个曲线,命名为MyCv(恩,控制的就是它了)
如图

2、代码中获取这个参数
private Animator mAtor;
public float mCv;
mAtor = GetComponentInChildren<Animator>();
mCv = mAtor.GetFloat("MyCv");

3、添加一个拖尾特效

在模型骨骼上添加一个空对象TrailSlot,TrailSlot挂一个TrailRender组件,随便创建一个颜色的材质球丢进去,调一下参数,如图:

4、用曲线值控制TrailRender组件的Time值

代码如下:
public class charCtrl : MonoBehaviour {
    //private Animation anim;
    private Animator mAtor;
    public float mCv; //用来测试曲线是否变化
    private TrailRenderer mTrail;
    void Start () {
        mAtor = GetComponentInChildren<Animator>();
        mTrail = GetComponentInChildren<TrailRenderer>();
    }
    void Update () {
        mCv = mAtor.GetFloat("MyCv");
        mTrail.time = mCv;
    }
}

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引