Unity 2D骨骼动画

许久不用Unity做骨骼动画还是会遗忘很多操作,这次使用又发现了很多新的细节。

必要插件

不出意外的是2D Animation和2D Sprite?项目本来就是2D包。

素材要求格式

万物皆可骨骼,unity的2d骨骼教程_哔哩哔哩_bilibili

参考上面的教程(很直观易懂),有单张图片、分散式绘制的单张图片,还有psb文件。

第二种方法挺令我惊奇的,虽然和第一种方法一样本质上都是一张图,但分离素材也能省去分图层的功夫。而且能更明显地看出,骨骼对图片中被圈出来并且刷好权重的网格像素能单独控制,底层来说可能是复制了一份像素并且受骨骼影响?待研究。

psb文件能够保留所有的图层。这样分层控制会更精细一些。

我这里素材比较复杂,所以用的还是psb文件。

素材导入

直接把psb文件拖入到Asset文件夹中,不需要做其它设置。

打开SpriteEditor,可以看见各图层已经排列出来。

绑骨

点击窗口左上角的Skinning Editor,有以下四个栏,分别是姿势、骨骼关节、网格、权重和所有骨骼。

点击CreateBone,像针一样的便是骨骼关节,针头是运动的"根"的位置,相当于树的主枝干,树一摆动上面的所有枝叶也会随之摇摆。(这个我经常搞反头尾......)

就这样哐哐绑骨。

骨骼分派给图层

同一个骨骼可能只会影响到其中一缕发丝而不是所有的头发,分图层的意义就在于此。

点击Weights->BoneInfluence,再点击右上角的SpriteSheet,

回到图层排列模式,双击想要控制的图层,就能显示对应的骨骼。

再点击SpriteSheet回到整合状态,可以看到图层在整体的情况。透明骨骼是无关骨骼,深色反之。

点击不需要的深色骨骼,在右下角就会跳到对应的名称,点击删除符号。新增骨骼也是相似操作。

网格生成

点击AutoGeometry便自动生成网格。网格的分布非常重要,之前接触三维建模的时候要求网格点均匀分布还得三角片面,2D也需要更均匀的网格(不然等到刷权重就后悔了)。

点数量适中:我这里的素材刚生成网格的时候点巨多,因为素材文件比较大像素就很分明,识别的时候就自动添加很多点,要狠狠地删掉点然后重新规划。

点沿轮廓分布:这样能够进行合理分区,影响的范围更可控。

点分布均匀:也是为了让影响范围更细致更可控。不排除一些特殊情况,点密集控制范围越精细,反之越笼统,可以根据需要摸索。

操作上的话,在EditGeometry模式下时,双击图片某处可以新增一个点并随意拖动点(非边界),这样就能对边界范围内进行更细致的点的排布;

(边界上)SplitEdge比CreateVertex好用。

权重

点击AutoWeights为关节以及网格自动刷权重。权重也就是连接了骨骼和网格,并且决定骨骼对某个点的影响比例多大。

在WeightBrush模式下可以刷权重,个人习惯从根骨骼开始一个个检查效果。

长按笔刷刷准网格点,这样就不容易点到骨骼,刷得才有效果,在网格里面刷是没用的。

如果效果很离谱或者没啥用,也多返回检查网格。

K动画

一系列工作做好后,右上角Apply一下应用更改,资产就多了很多东西。 突然想到,上面的图层应该就是从原图层复制出来受骨骼控制的。

直接把该psb文件拖到场景中,添加Animator和Animation,就可以愉快地k动画了。

个人习惯在第一帧先把所有的骨骼的position、rotation以及一切可能用得上的参数都add keyk帧,再把该帧作为最后一帧(循环动画),中间想怎么k就怎么k了。

拓展

挖个坑,看到网上还有IK、换装什么的,下次用上再回来补充。

相关推荐
Thomas_YXQ13 天前
Unity3D项目为什么要使用FairyGUI
开发语言·unity·游戏引擎·unity3d·游戏开发
nicepainkiller13 天前
Flutter 内嵌 unity3d for android
flutter·unity3d
Thomas_YXQ1 个月前
Unity3D ngui和ugui区别与优缺点详解
服务器·游戏·unity·unity3d·游戏开发
Thomas_YXQ1 个月前
Unity3D Lua如何支持面向对象详解
开发语言·游戏·junit·性能优化·lua·unity3d
Thomas游戏开发1 个月前
Unity3D 逻辑服的Entity, ComponentData与System划分详解
前端框架·unity3d·游戏开发
大眼睛姑娘1 个月前
unity运行状态下移动、旋转、缩放控制模型
unity3d
lin zaixi()1 个月前
手把手教你写Unity3D飞机大战(2)天空盒布置
unity3d
Thomas_YXQ2 个月前
Unity3D中管理Shader效果详解
开发语言·游戏·unity·unity3d·游戏开发
羊羊20352 个月前
线性代数:Matrix2x2和Matrix3x3
线性代数·数学建模·unity3d
天人合一peng2 个月前
Unity hub登录时一直无法进入license
unity3d