Unity插件 - MeshEditor(六) 变形动画状态机

时间:2022-12-18 22:40:36

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

好了进入正题:

第一步:

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

Unity插件 - MeshEditor(六) 变形动画状态机

第二步:

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

Unity插件 - MeshEditor(六) 变形动画状态机

第三步:

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

第四步:

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

第五步:

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

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

Unity插件 - MeshEditor(六) 变形动画状态机

红色标记的连线为当前选中的过渡关系,可以点击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拖给他

Unity插件 - MeshEditor(六) 变形动画状态机

第七步:

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

外部可控开关有play和stop

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

Unity插件 - MeshEditor(六) 变形动画状态机

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

源码请看第一篇

-----by MeshEditor

Unity插件 - MeshEditor(六) 变形动画状态机的更多相关文章

  1. Unity插件 - MeshEditor(五) 网格顶点动画(变形动画)

    源码已上传至github,并持续更新,链接请看底部.(本帖跟随github持续更新) 网格顶点动画(变形动画)是针对于物体的形状可以随意变换并记录为关键帧的动画,虽然模型的顶点数据还是应该交给GPU绘 ...

  2. Unity插件 - MeshEditor(七)变形动画骨骼及蒙皮

    MeshAnimation在物体的顶点比较多的情况下,悲剧是显而可见的,我一个一个的点选顶点肯定得累死,而且对于形态的调控不是很方便,应该说是很麻烦,要知道,骨骼动画因为有了骨骼以及蒙皮信息而有了灵魂 ...

  3. Unity插件 - MeshEditor(一) 3D线段作画 &amp&semi; 模型网格编辑器

    之前,因为工作需要,项目中需要动态生成很多的电线,不能事先让模型做好,更不能用LineRenderer之类的,因为画出来没有3D的效果,最主要是拐角的时候还容易破面,而我们要的是真真实实纯3D的电线, ...

  4. Unity插件 - MeshEditor(三) 面片破碎&amp&semi;网格破碎

    网上的unity破碎插件很多,不过想着可以以自己的方式实现也不失为一种乐趣,虽然整体的表现性上显得有些差,但也并不会影响最终的效果,接下来我大致讲解一下破碎一个物体的流程,因为用到了协程计算碎片的原因 ...

  5. Unity插件 - MeshEditor(二) 模型网格编辑器(高级)

    源码已上传至github,并持续更新,链接请看底部.(本帖跟随github持续更新) 继先前的一篇MeshEditor之后,MeshEditor第二版发布,这次在先前的基础上加入了为模型新增顶点以及删 ...

  6. Unity插件 - MeshEditor(八)模型镜像特效

    将静态模型(带MeshFilter)按指定轴向.指定距离克隆一个镜像物体出来,思路很简单,将模型的顶点坐标按指定轴取反,并累加上设定的距离值,然后就完毕了!不过,因为镜像体的顶点镜像于之前模型的顶点, ...

  7. Unity插件 - MeshEditor(四) 模型融化特效

    现在的电影里有很多妖魔在死亡后身体逐渐融化并下滑最后化为一滩黑水的情景,本次出于兴趣大致研究了这个效果,原理是控制模型的顶点向一个方向坍塌,坍塌到最低点时再根据法线方向扩散形成黑水状. 第一步: 添加 ...

  8. Unity动画知识之二:Animator动画状态机

    上次我们讲过Unity游戏动画从入门到住院,今天我们来讲一下动画状态机. 好了,现在我们已经成功的导入了动画.接下来要玩的东西就很装13啦.因为大部分动画师是用不到这家伙的,需要掌握这个技能的,至少也 ...

  9. &lbrack;Unity&rsqb;插件Node Editor介绍 实现类似状态机画布的扩展

    Unity自带的动画状态机有一套对策划非常友好的UI.但是Unity官方没有公开这些控件的api.除了Asset Store里一些已有的方案,我在这里介绍一个在github上的开源项目,封装了底层,但 ...

随机推荐

  1. Zabbix监控nginx-rtmp status(json版)

    与前面的文章 zabbix监控nginx-rtmp status(html版)区别只在于取值的页面不一样 http://127.0.0.1:81/control/get/all_streams sta ...

  2. 【专业找水题】状压dp最水题,没有之一

    题目链接 现在代码能力没上升,倒是越来越会找水题了(比例题还水的裸题你值得拥有) 这网站不是针对竞赛的,所以时空限制都很宽松 然后就让我水过去了 对于每个点,包括自己的前m个元素是否取都是一种状态,所 ...

  3. BZOJP1003 &lbrack;ZJOI2006&rsqb;物流运输trans

    BZOJP1003 [ZJOI2006]物流运输trans 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec  Memory Limit: 162 MB Sub ...

  4. C&plus;&plus;&lowbar;知识点&lowbar;全局变量

    全局变量 -全局变量即在函数之外定义的变量 -全局变量保存在静态存储区 注意: -全局变量只能声明和初始化 -全局变量不能进行运算.赋值(非初始化).调用函数 -否则会出现编译错误 -error: e ...

  5. 关于Iscroll&period;js 的滑动和Angular&period;js路由冲突问题

    Iscroll主要应用于app移动端开发. 主要代码: window.onload=function(){ var myIscroll=new IScroll(".headerNav&quo ...

  6. JavaScript之Object拆解

    转载烦请注明原文链接: https://github.com/Xing-Chuan/blog/blob/master/JavaScript/JavaScript%E4%B9%8BObject%E6%8 ...

  7. ssh com&period;jcraft&period;jsch&period;JSchException&colon; Algorithm negotiation fail报错问题解决

    我司自动安装部署工具ideploy,使用ssh连接主机并部署业务.今天提供给一线安装规划后,安装报错,测试连接主机失败,而直接使用ssh是可以连接上主机的.查看问题错误堆栈如下: ERROR pool ...

  8. WindowsErrorCode

    0 操作成功完成.1 功能错误.2 系统找不到指定的文件.3 系统找不到指定的路径.4 系统无法打开文件.5 拒绝访问.6 句柄无效.7 存储控制块被损坏.8 存储空间不足, 无法处理此命令.9 存储 ...

  9. 【问题解决:Mysql操作容量限制问题】Error updating database&period; Cause&colon; com&period;mysql&period;jdbc&period;PacketTooBigException&colon; Packet for query is too large &lpar;1082 &gt&semi; 1024&rpar;

    在做查询数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是mysql的max_allowed_packet设置过小引起的,我一开始设置的是1M,后来改为了20M ...

  10. git常用命令小记

    git status 查看缓存区和工作区的状态 +表示N个新文件 ~表示N个修改 -表示N个删除 两组的时候前面的是暂存区,后面的是工作区 git add fileName 变更文件状态(工作区--& ...