Unity插件


变形动画状态机——MeshAnimator,是针对MeshAnimation的状态管理器,有大量类似Unity animator的功能,但MeshAnimator操作会更加简便,更加直观,居家旅(zhuang)行(bi)必备啊有木有!


好了进入正题:



第一步:


首先,我们先创建一个MeshAnimatorControler,有点远,注意到屏幕的下方了可能不好找



第二步:


注意这就是我们创建的MeshAnimatorControler,每个MeshAnimator对应一个MeshAnimatorControler,在MeshAnimatorControler中建立各个动画片段之间的关系



第三步:


然后我们将他按自己的喜好重名个名称,选中他并用菜单栏选项:Window/变形动画状态机   打开

初始的话,打开是这个样子的,目前里面的动画片段是空的



第四步:


用之前变形动画编辑器(Component/变形动画编辑器)K好的动画添加到里面去,怎么K动画我就不细说了,前一有描述,总之我这里用Cube的网格K了4个动画

然后将他们一一拖入刚才的“变形动画状态机”窗口

我们可以看到此时的状态机已经记录了第一次拖入的动画片段的顶点数(右上角)为24,也就是说此状态机之后只会接受面向24个网格顶点的动画片段,不是的话就拖不进去的,默认会将第一个拖入的片段设为缺省动画,我们可以在动画片段上用鼠标随意拖拽其位置,如果超出窗口边界了,或者说某种原因导致窗口缩小看不到一些动画片段了,可以点击右上角的所有动画片段索引,看不到的动画片段会立马回到正中间高亮

在动画片段上右击可以选择将此片段建立过渡关系到另一动画片段,也可以设置新的缺省动画



第五步:


我们这里先建立一连串的复杂关系再说

过渡关系连线的规则是,从一个动画片段A右侧连接至下一个动画片段B左侧,代表的过渡关系为:A过渡到B

选中任一片段,可以查看由他过渡出去的所有过渡关系,选中指定的过渡关系,可以为其设置过渡条件

红色标记的连线为当前选中的过渡关系,可以点击delete删除它,勾选has exit time则在动画结束时自动跳转到下一动画,同时会忽略后面的过渡条件,如果不勾选,则后面的bool判断条件生效,如果bool变量jump的值为true,动画会过渡到下一动画,可以在代码中使用SetBool设置bool变量的值,只支持bool变量,不支持float之类的

MeshAnimator _MeshAnimator;

	void Start () {
	    _MeshAnimator = transform.GetComponent<MeshAnimator>();
	}
	
	void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("行走");
            _MeshAnimator.SetBool("going",true);
        }
        if (Input.GetMouseButtonDown(1))
        {
            Debug.Log("跳跃");
            _MeshAnimator.SetBool("jump", true);
        }
        if (Input.GetMouseButtonDown(2))
        {
            Debug.Log("重置");
            _MeshAnimator.SetBool("jump", false);
            _MeshAnimator.SetBool("going", false);
        }
	}


 



第六步:


此时我们就可以随便找个cube给他挂上MeshAnimator,并将我们上面编辑的MeshAnimatorControler拖给他



第七步:


运行程序,我们可以看到角色(cube)先是原地闲置,然后行走,再切换到跳跃,最后攻击

都是按照这条轨迹线走下去的,因为另一条轨迹线并未启用,当然,如果启用了的同时有两条轨迹线都满足条件,那么它也只会选择其中的一条进行下去

外部可控开关有play和stop


 加入了新的方法,获取当前的动画状态,返回当前动画片段的名称



设置当前的动画状态,忽略状态机中连线过渡关系,角色会立即跳转到该动画




DLL版插件地址:http://download.csdn.net/detail/qq992817263/9659011


源码请看第一篇


-----by MeshEditor

原文地址:https://www.cnblogs.com/liang123/p/6325861.html